get和load的區別:
get不支援延遲載入,而load支援。
當查詢特定的資料庫中不存在的資料時,get會返回null,而load則丟擲異常。
類(class)的延遲載入:
設定標籤中的lazy="true",或是保持預設(即不配置lazy屬性)
如果lazy的屬性值為true,那麼在使用load方法載入資料時,只有確實用到資料的時候才會發出sql語句;這樣有可能減少系統的開銷。
//不會發出查詢sql
system.out.println("group id=" + group.getid());
這裡有乙個問題,為什麼載入主鍵的時候不需要發出sql語句。
將不執行select 查詢,而是建立了group類的**類例項,僅初始化oid屬性,
在訪問group類的oid主鍵屬性時不會查詢資料庫
只有在第一次訪問非oid屬性時,才會執行sql查詢資料庫
lazy,延遲載入
lazy的有效期:只有在session開啟的時候才有效;session關閉後lazy就沒效了。
5.1、lazy策略可以用在:
5.2、設定集合上的lazy=false
並不會去載入整個集合的資料,而是發出一條聰明的sql語句,以便獲得需要的值,只有在真正需要用到這些集合元素物件資料的時候,才去發出查詢語句載入所有物件的資料
5.3、hibernate單端關聯懶載入策略:即在/標籤上可以配置
注意:在class標籤上配置的lazy屬性不會影響到關聯物件!!!
Hibernate 十一 檢索
get和load的區別 get不支援延遲載入,而load支援。當查詢特定的資料庫中不存在的資料時,get會返回null,而load則丟擲異常。類 class 的延遲載入 設定標籤中的lazy true 或是保持預設 即不配置lazy屬性 如果lazy的屬性值為true,那麼在使用load方法載入資料...
Hibernate 檢索策略
在預設情況下,當hibernate從資料庫中載入物件時,會同時載入所有關聯的物件.但實際應用中可能不需要使用其關聯的物件,這樣就可能通過設定hibernate的檢索策略,來優化檢索效能.hiberante提供了3種檢索策略 1 立即檢索 2 延遲檢索 3 迫切左外連線檢索 下面先從概念上去理解,先在...
Hibernate檢索策略
預設的檢索策略是立即檢索。在hibernate對映檔案中,通過在上配置 lazy屬性來確定檢索策略。對於session的檢索方式,類級別檢索策略僅適用於load方法 也就說,對於get qurey檢索,持久化物件都會被立即載入而不管lazy是false還是true.一般來說,我們檢索物件就是要訪問它...