熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

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

2013-11-23 20:45:29  來源: Java開源技術 

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

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

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

  還有就是這兩個方法的第二個參數id它必須是實現了javaioSerializable接口也就是可序列化的


From:http://tw.wingwit.com/Article/program/Java/ky/201311/29036.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.