http://www.sienaproject.com/index.html
这个需要翻墙才能看到,一个技术网站也被我们伟大的长城防火墙给和谐了,真让人郁闷。
Siena也是一个设计非常简单的ORM,而且很有自己的特色。可以说,它是目前我看到的里面最好的那个(如果ActiveObjects不用接口和getter/setter的话,两个就并列第一了)。
它的灵感来源于Google App Engine Python Datastore API,看一个查询的例子:
List
.filter(“firstName”, “Mark”)
.order(“-lastName”)
.fetch(10);
相当的简洁明快。再和它的实体类的定义:
@Table(“employees”)
public class Employee extends Model {
@Id(Generator.AUTO_INCREMENT)
public Long id;
@Column(“first_name”)
@Max(200) @NotNull
public String firstName;
@Column(“last_name”)
@Max(200) @NotNull
public String lastName;
@Column(“contact_info”)
public Json contactInfo;
@Column(“boss”) @Index(“boss_index”)
public Employee boss;
@Filter(“boss”)
public Query
public static void main(String[] args) {
Employee e = new Employee();
e.firstName = “John”;
e.lastName = “Smith”;
e.contactInfo = map()
.put(“email”, “john.smith@example.com“)
.put(“telephone”, list(“xxx”, “yyy”));
e.insert();
System.out.println(e.contactInfo);
}
public static Query
return Model.all(Employee.class);
}
}
类似于play中的JPA,也是很好理解和接受的。
它有这么几个优点:
设计简单,好学好用
不光支持常见的数据库,还支持Google App Engine datastore和Amazon's SimpleDB
如果你某些字段的结构比较复杂,可以把它变成json保存在一个字段里,非常方便
准备好好研究一下这个项目。它当前的版本才0.7.x,看起来还不太成熟