Loading...

          java .net

          重溫Hibernate基礎--get/load的區別

          下了個Hibernate視頻教程聽,雖然一年多以前跟老師學過Hibernate,但現在聽聽還是有很多收獲的,發現自己的知識知道的都是些皮毛,用了很久的東西,知道怎么操作怎么用,但要說說它的所以然,搖搖頭,呵呵

          根據主鍵Id得到一個持久對象,Hibernate中有兩個方法,一個get,一個load,他們兩個參數相同,都返回一個Object

          它們的區別:
          執行get方法即時生成查詢sql去查詢數據庫得到相應的pojo,如果數據庫中沒有相應記錄,則返回null
          執行load方法不會即時產生sql語句,而是在用到返回的對象時采取查詢數據庫,也就是load方法有默認的延遲加載,在執行load方法后返回的不是一個pojo對象,是pojo對象的一個代理(據說Hibernate是用代理的方式實現延遲加載的,這塊還迷糊),如果數據庫中沒有相應記錄,load方法會拋出異常ObjectNotFoundException
          看了一下我們用MyEclipse hibernate工具通過數據庫生成的DAO類,它的findById方法是用的session.get()方法,這是即時獲得pojo對象,如果是load方法,在執行完load后如果關閉了session,那在接下來用到這個pojo對象時恐怕會報session已關閉的錯誤。
          還有就是這兩個方法的第二個參數id,它必須是實現了java.io.Serializable接口,也就是可序列化的。

          今天好像是立冬,冬天到了,抓緊時間充充電,明天接著學...

          posted on 2008-11-07 10:15 閱讀(1987) 評論(2)  編輯  收藏 所屬分類: 學習java

          評論

          # re: 重溫Hibernate基礎--get/load的區別 2008-12-25 16:21 你還真是豬

          有沒有學會啊。亂寫。  回復  更多評論   

          # re: 重溫Hibernate基礎--get/load的區別 2008-12-25 17:44

          別光批評不指正啊  回復  更多評論   

          公告

          希望有一天

          我能用鼠標雙擊我的錢包

          然后選中一張100元

          按住“ctrl+c”

          接著不停的“ctrl+v”

          嘻嘻~~~笑醒~~~



          導航

          <2008年12月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          統計

          常用鏈接

          留言簿(6)

          隨筆分類(102)

          隨筆檔案(398)

          文章分類

          文章檔案(10)

          有趣網絡

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 老河口市| 通河县| 渝中区| 泸西县| 巴林左旗| 韩城市| 伊通| 华坪县| 福鼎市| 宁德市| 巴林左旗| 漯河市| 巴彦淖尔市| 新竹市| 广宁县| 呼和浩特市| 保定市| 雅江县| 平乡县| 宜黄县| 井研县| 皮山县| 河北区| 威海市| 北流市| 华蓥市| 视频| 呼和浩特市| 灌阳县| 宣威市| 延安市| 旬邑县| 仲巴县| 札达县| 贵州省| 武义县| 张家口市| 二连浩特市| 三原县| 饶河县| 怀安县|