隨筆 - 3, 文章 - 152, 評(píng)論 - 17, 引用 - 0
          數(shù)據(jù)加載中……

          Hibernate的檢索方式

           Q:Hibernate的檢索方式有很多
          對(duì)象圖的導(dǎo)航檢索,load/get檢索,HQL(find,Query)檢索,QBC(Criteria,QBE)檢索以及本地?cái)?shù)據(jù)庫(kù)SQL檢索.
          那么,在實(shí)際應(yīng)用中到底選擇哪一種檢索好?它們之間的檢索有哪些聯(lián)系和區(qū)別呢?
           

          A:(by Robbin)HQL功能最強(qiáng)大,適合各種情況,但是動(dòng)態(tài)條件查詢構(gòu)造起來(lái)很不方便
          Criteria最適合動(dòng)態(tài)條件查詢,不太適合統(tǒng)計(jì)查詢,QBE還不夠強(qiáng)大,只適合相當(dāng)簡(jiǎn)單的查詢
          NativeSQL可以實(shí)現(xiàn)特定數(shù)據(jù)庫(kù)的SQL,但是可移植性就犧牲了


          Hibernate2的Criteria功能不夠完善,所以Hibernate2上面可用的只有HQL和NativeSQL,Hibernate3的Criteria已經(jīng)非常強(qiáng)大了。

          我的選擇原則是:

          針對(duì)web應(yīng)用來(lái)說(shuō),大部分常規(guī)查詢都是動(dòng)態(tài)條件查詢,所以首選使用Criteria,并且Hibernate3提供了DetachedCriteria,可以在web層構(gòu)造好DetachedCriteria再進(jìn)入session執(zhí)行查詢,非常方便實(shí)用的特性。

          但是涉及到統(tǒng)計(jì)查詢和非常復(fù)雜的關(guān)聯(lián)查詢,Criteria就無(wú)能為力了,這種情況下我選擇使用HQL。

          最后如果必須使用某些數(shù)據(jù)庫(kù)的特性,例如Oracle的"...connect with ... by"這樣的SQL,則選擇使用NativeSQL。

          posted on 2005-08-09 21:21 閱讀(389) 評(píng)論(0)  編輯  收藏 所屬分類: Hibernate

          主站蜘蛛池模板: 泗洪县| 洛宁县| 榕江县| 洛浦县| 宝坻区| 宁南县| 余江县| 门头沟区| 含山县| 西昌市| 大丰市| 靖西县| 新绛县| 宁安市| 长丰县| 凌海市| 肇州县| 嵊泗县| 宝山区| 资阳市| 莆田市| 西乌珠穆沁旗| 镇坪县| 和平区| 炉霍县| 铅山县| 昂仁县| 即墨市| 那曲县| 中阳县| 邓州市| 和龙市| 仁化县| 蒙城县| 醴陵市| 会宁县| 大城县| 兰溪市| 清新县| 兴海县| 抚远县|