Hibernate的檢索方式
Q:Hibernate的檢索方式有很多
對象圖的導航檢索,load/get檢索,HQL(find,Query)檢索,QBC(Criteria,QBE)檢索以及本地數據庫SQL檢索.
那么,在實際應用中到底選擇哪一種檢索好?它們之間的檢索有哪些聯系和區別呢?
A:(by Robbin)HQL功能最強大,適合各種情況,但是動態條件查詢構造起來很不方便
Criteria最適合動態條件查詢,不太適合統計查詢,QBE還不夠強大,只適合相當簡單的查詢
NativeSQL可以實現特定數據庫的SQL,但是可移植性就犧牲了
Hibernate2的Criteria功能不夠完善,所以Hibernate2上面可用的只有HQL和NativeSQL,Hibernate3的Criteria已經非常強大了。
我的選擇原則是:
針對web應用來說,大部分常規查詢都是動態條件查詢,所以首選使用Criteria,并且Hibernate3提供了DetachedCriteria,可以在web層構造好DetachedCriteria再進入session執行查詢,非常方便實用的特性。
但是涉及到統計查詢和非常復雜的關聯查詢,Criteria就無能為力了,這種情況下我選擇使用HQL。
最后如果必須使用某些數據庫的特性,例如Oracle的"...connect with ... by"這樣的SQL,則選擇使用NativeSQL。
對象圖的導航檢索,load/get檢索,HQL(find,Query)檢索,QBC(Criteria,QBE)檢索以及本地數據庫SQL檢索.
那么,在實際應用中到底選擇哪一種檢索好?它們之間的檢索有哪些聯系和區別呢?
A:(by Robbin)HQL功能最強大,適合各種情況,但是動態條件查詢構造起來很不方便
Criteria最適合動態條件查詢,不太適合統計查詢,QBE還不夠強大,只適合相當簡單的查詢
NativeSQL可以實現特定數據庫的SQL,但是可移植性就犧牲了
Hibernate2的Criteria功能不夠完善,所以Hibernate2上面可用的只有HQL和NativeSQL,Hibernate3的Criteria已經非常強大了。
我的選擇原則是:
針對web應用來說,大部分常規查詢都是動態條件查詢,所以首選使用Criteria,并且Hibernate3提供了DetachedCriteria,可以在web層構造好DetachedCriteria再進入session執行查詢,非常方便實用的特性。
但是涉及到統計查詢和非常復雜的關聯查詢,Criteria就無能為力了,這種情況下我選擇使用HQL。
最后如果必須使用某些數據庫的特性,例如Oracle的"...connect with ... by"這樣的SQL,則選擇使用NativeSQL。
posted on 2005-08-09 21:21 辰 閱讀(384) 評論(0) 編輯 收藏 所屬分類: Hibernate