0734w-月下竹音

          0734是來自家鄉的聲音

          導航

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          留言簿(3)

          收藏夾

          隨筆檔案

          文章檔案

          閱讀排行榜

          評論排行榜

          常用鏈接

          統計

          最新評論

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

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

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

          criteria的方式,盡量避免了寫hql語句,看起來更面向對象了。

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

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

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

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

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


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


          網站導航:
           
          主站蜘蛛池模板: 锡林郭勒盟| 鹤壁市| 壶关县| 榕江县| 莒南县| 乌苏市| 永胜县| 台中县| 睢宁县| 含山县| 安徽省| 上饶市| 滨州市| 临泉县| 乾安县| 长阳| 石阡县| 达州市| 舒城县| 耿马| 鄂州市| 东丰县| 灵寿县| 武隆县| 泗洪县| 刚察县| 淮北市| 永福县| 涿州市| 中方县| 陕西省| 磐石市| 麻城市| 修文县| 东辽县| 邳州市| 舞钢市| 浮梁县| 郸城县| 济阳县| 涟水县|