lazy
,延遲載入
lazy
的有效期:只有在
session
開啟的時候才有效;
session
關閉後lazy
就沒效了。
lazy
策略可以用在:
* 標籤上:可以取值true/false
* 標籤上,可以取值true/false,這個特性需要類增強
* /等集合上,可以取值為true/false/extra
* /等標籤上,可以取值false/proxy/no-proxy
6.1 get
和load
的區別:
* get不支援延遲載入,而load支援。
* 當查詢特定的資料庫中不存在的資料時,get會返回null,而load則丟擲異常。
6.2類
(class)
的延遲載入:
* 設定標籤中的lazy="true",或是保持預設(即不配置lazy屬性)
* 如果lazy的屬性值為true,那麼在使用load方法載入資料時,只有確實用到資料的時候才會發出sql語句;這樣有可能減少系統的開銷。
* //不會發出查詢sql
system.out.println("group id=" + group.getid());
這裡有乙個問題,為什麼載入主鍵的時候不需要發出sql語句。
6.3集合
(collection)
的延遲載入:可以取值
true
,false
,extra
* 保持集合上的lazy的預設值,此時的效果和lazy="extra"是基本一樣的。
* 設定集合上的lazy=extra,此時的效果和lazy屬性的預設值是基本一樣的。但是推薦使用這個屬性值,因為在統計時這種情況顯得比較智慧型。當然延遲是有效果的。
* 設定集合上的lazy=false
true:預設取值,它的意思是只有在呼叫這個集合獲取裡面的元素物件時,才發出查詢語句,載入其集合元素的資料
false:取消懶載入特性,即在載入物件的同時,就發出第二條查詢語句載入其關聯集合的資料
extra:一種比較聰明的懶載入策略,即呼叫集合的size/contains等方法的時候,hibernate
並不會去載入整個集合的資料,而是發出一條聰明的sql語句,以便獲得需要的值,只有在真正需要用到這些集合元素物件資料的時候,才去發出查詢語句載入所有物件的資料
6.4 hibernate
單端關聯懶載入策略:即在
/標籤上可以配置
懶載入策略。可以取值為:
false/proxy/no-proxy
false:取消懶載入策略,即在載入物件的同時,發出查詢語句,載入其關聯物件
proxy:這是hibernate對單端關聯的預設懶載入策略,即只有在呼叫到其關聯物件的方法的時候才真正發出查詢語句查詢其物件資料,其關聯物件是**類
no-proxy:這種懶載入特性需要對類進行增強,使用no-proxy,其關聯物件不是**類
注意:在class標籤上配置的lazy屬性不會影響到關聯物件!!!
hibernate中lazy的使用
lazy,延遲載入 lazy的有效期 只有在session開啟的時候才有效 session關閉後lazy就沒效了。lazy策略可以用在 標籤上 可以取值true false 標籤上,可以取值true false,這個特性需要類增強 等集合上,可以取值為true false extra 等標籤上,可以...
Hibernate中的lazy策略
hibernate lazy策略可以使用在 可以取值true false 標籤上,可以取值,true false需要類增前工具 標籤上,可以取值 true false extra 單端關聯上,可以取值 false proxy noproxy lazy概念,只有真正使用該物件時,才會建立,對於hibe...
hibernate中lazy的使用
lazy 延遲載入 lazy 的有效期 只有在 session 開啟的時候才有效 session 關閉後lazy 就沒效了。lazy 策略可以用在 標籤上 可以取值true false 標籤上,可以取值true false,這個特性需要類增強 等集合上,可以取值為true false extra 等...