2011-07-07 32 views

回答

8

隨着HQL您在操作上一類基於域的水平,並在關係模型級SQL。通過HQL,您可以在查詢和SQL中遍歷域模型,從而創建帶有更加冗長的連接和連接條件的鏈接。

而且當你對象直接進行,而與SQL您可以表格視圖關係數據與HQL的預測是簡單。

優化HQL是比較困難的,因爲你需要在很多層面(域級別,休眠,生成的SQL,關係模型)進行操作,但主要是你可以用更少的代碼管理。

SQL結果不是類型安全的,但是這因爲它會在一個Java背景其實並不重要,儘可能在Grails的環境。

+3

+1。我會補充說,使用Hibernate爲您提供了一級緩存(強制性)和二級緩存(可選),這可以真正提高性能。 –

+0

很好的答案。你也可以談論懶惰和渴望的選擇,如果你對你的HQL不小心,可能會導致性能下降。 –