0734w-月下竹音

          0734是來自家鄉(xiāng)的聲音

          常用鏈接

          統(tǒng)計

          最新評論

          (轉(zhuǎn))hibernate的查詢 (比較get 與load)

          hibernate的查詢有很多,Query,find,Criteria,get,load

          query使用hsql語句,可以設(shè)置參數(shù)是常用的一種方式

          criteria的方式,盡量避免了寫hql語句,看起來更面向?qū)ο罅恕?/p>

          find方式,這種方式已經(jīng)被新的hibernate丟棄見這里
          http://www.aygfsteel.com/dreamstone/archive/2007/07/28/133053.html

          get和load方式是根據(jù)id取得一個記錄
          下邊詳細說一下get和load的不同,因為有些時候為了對比也會把find加進來。

          1,從返回結(jié)果上對比:
          load方式檢索不到的話會拋出org.hibernate.ObjectNotFoundException異常
          get方法檢索不到的話會返回null

          2,從檢索執(zhí)行機制上對比:
          get方法和find方法都是直接從數(shù)據(jù)庫中檢索
          而load方法的執(zhí)行則比較復(fù)雜
          1,首先查找session的persistent Context中是否有緩存,如果有則直接返回
          2,如果沒有則判斷是否是lazy,如果不是直接訪問數(shù)據(jù)庫檢索,查到記錄返回,查不到拋出異常
          3,如果是lazy則需要建立代理對象,對象的initialized屬性為false,target屬性為null
          4, 在訪問獲得的代理對象的屬性時,檢索數(shù)據(jù)庫,如果找到記錄則把該記錄的對象復(fù)制到代理對象的target
          上,并將initialized=true,如果找不到就拋出異常 。

          posted on 2007-12-11 22:40 sparkwu 閱讀(125) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 富平县| 呼图壁县| 中方县| 当雄县| 大新县| 金湖县| 化隆| 肇庆市| 高碑店市| 宁阳县| 曲麻莱县| 元朗区| 姜堰市| 日土县| 阿坝县| 蒙自县| 玉溪市| 广州市| 瑞昌市| 南漳县| 陆河县| 邹城市| 开封县| 泰来县| 化德县| 新平| 兴文县| 繁峙县| 维西| 明溪县| 酉阳| 什邡市| 财经| 项城市| 平山县| 曲阜市| 资阳市| 和林格尔县| 清河县| 枞阳县| 崇仁县|