懶載入的意思是查詢的時候不會立刻訪問資料庫,而返回的是**物件,當真正去使用物件欄位的時候才會訪問資料庫。
load(object, serializable)
:前提實體類不能是final的。根據id查詢 。查詢返回的是
**物件,不會立刻訪問資料庫,是懶載入的。當真正去使用物件的時候才會訪問資料庫。
用load的時候會發現不會列印出查詢語句,而使用get的時候會列印出查詢語句。
使用load時如果在session關閉之後在查詢此物件,會報異常:could not initialize proxy - no session。處理辦法:在session關閉之前初始化一下查詢出來的物件:
hibernate.initialize(user);
使用load可以提高效率,因為剛開始的時候並沒有查詢資料庫。但很少使用。
一、一對一的懶載入分析
一對一的時候,查詢主物件時預設不是懶載入。即:查詢主物件的時候也會把從物件查詢出來。
需要把主物件配製成
lazy="true" constrained="true" fetch="select"。此時查詢主物件的時候就不會查詢從物件,從而實現了懶載入。
一對一的時候,查詢從物件的是偶預設是懶載入。即:查詢從物件的時候不會把主物件查詢出來。
二、一對多的懶載入分析
一對多的時候,查詢主物件時預設是懶載入。即:
查詢主物件的時候不會把從物件查詢出來。
一對多的時候,查詢從物件時預設是懶載入。即:
查詢從物件的時候不會把主物件查詢出來。
需要配置主物件中的set集合 lazy="false" 這樣就配置成是不懶載入了。或者配置抓取方式fetch="join"也可以變成不懶載入。
三、多對一的懶載入分析
多對一的時候,查詢主物件時預設是懶載入。即:查詢主物件的時候不會把從物件查詢出來。
多對一的時候,查詢從物件時預設是懶載入。即:查詢從物件的時候不會把主物件查詢出來。
Hibernate中的懶載入原理分析
當使用session中的load方法查詢資料庫中的記錄時,我們返回的是乙個 物件,而不是真正需要的那個物件 例如資料庫中存有個student表,我們有cn.binyulan.doman.student的領域物件,如果查詢id值為 200626313 的studentstu student sessi...
Hibernate懶載入策略
hibernate懶載入策略 概念 lazy的概念就是只有在真正使用物件時,才會去建立。對hibernate而言,就是真正載入時才發出載入sql語句。延遲載入機制是為了避免一些無謂的效能開銷而提出來的。重點牢記 1.load支援延遲載入,get不支援延遲載入。2.lazy的生命週期與session相...
Hibernate懶載入策略
hibernate懶載入策略 概念 lazy的概念就是只有在真正使用物件時,才會去建立。對hibernate而言,就是真正載入時才發出載入sql語句。延遲載入機制是為了避免一些無謂的效能開銷而提出來的。重點牢記 1.load支援延遲載入,get不支援延遲載入。2.lazy的生命週期與session相...