2010-01-31 14 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能夠根據這個「活動記錄模式」生成實體,並允許開發人員包含查找器方法。