2010-01-31 13 views
4

的Django之类的查询是否有任何库或框架使JPA查询在一个更简洁的方式,如:代替用Java/JPA

User.query("age < 30") 

Query query = entityManager.createQuery("select u FROM User u WHERE age < 30"); 
return query.getResultList(); 

我想有没有标准的方式来与JPA做到这一点。我见过Hibernate Criteria API,这不像Django那么简单,并且迫使你的应用程序与Hibernate耦合。我想知道你对它和其他方法有什么看法。

回答

5

是的,Java框架允许您这样做:播放!框架。它是一个类似于Django的框架,但是使用Java编写的完整框架。 http://www.playframework.org/documentation/1.0.1/model

例如,您可以编写类似:

User.find("age< ?", 30).fetch(); 

而且这不是耦合到休眠您可以使用其他技术,如谷歌App Engine数据存储或亚马逊简单数据库掷Siena

+0

有趣。有些部分是实验性的(SimpleDB)或似乎正在建设中(Siena-remote)。 – 2010-02-06 13:02:30

+1

我不喜欢的一件事是需要从“siena.Model”扩展你的域类,因为Java不支持多继承。 – 2010-02-06 13:12:50

2

你可以让你的查询更短:

from User where age < 30 

另外我想补充的是,Hibernate的API功能更强大,并增加了类似的事情多态性与预取一个不错的方式,所以不要放弃在它上面呢。

+0

谢谢。任何有关Hibernate多态和预取的良好链接? – 2010-01-31 11:58:41

+0

查看HQL的hibernate文档,14.3包含抓取和14.8多态查询。 14.15和16也不错。 – 2010-02-03 20:42:22

+1

http://docs.jboss.org/hibernate/stable/core/reference/en/html/queryhql.html – 2010-02-03 20:42:43

1

与它有关,我还发现Spring Roo能够根据这个“活动记录模式”生成实体,并允许开发人员包含查找器方法。