HIbernate Lazy 常用配置

2022-09-17 00:27:14 字數 1226 閱讀 2187

lazy:延遲載入,在真正使用某個物件的時候才正真的去建立,即hibernate才會正真的發出sql語句去載入該物件

lazy的有效期:只有在session開啟的時候才有效;session關閉後lazy就沒效了。

lazy策略可以用在:

1、 標籤上:可以取值true/false

* 標籤上,可以取值true/false,這個特性需要類增強(不常用)

* 設定標籤中的lazy="true",或是保持預設(即不配置lazy屬性)

* 如果lazy的屬性值為true,那麼在使用load方法載入資料時,只有確實用到資料的時候才會發出sql語句;這樣有可能減少系統的開銷。

注:上的lazy只影響普通屬性      

2、集合(collection)的延遲載入,主要應用在/等集合上:可以取值true,false,extra  (常用extra,比較智慧型)

* true:預設取值,它的意思是只有在呼叫這個集合獲取裡面的元素物件時,才發出查詢語句,載入其集合元素的資料。

*false:取消延時載入特性,即在載入物件的同時,就發出第二條查詢語句載入其關聯集合的資料

*extra:一種比較聰明的懶載入策略,即呼叫集合的size/contains等方法的時候,hibernate並不會去載入整個集合的資料,而是發出一條聰明的sql語句,以便獲得需要的值,只有在真正需要用到這些集合元素物件資料的時候,才去發出查詢語句載入所有物件的資料

3、單端關聯延遲載入策略, 配置在/等標籤上,可以取值false/proxy/no-proxy

*false:取消遲加載入策略,即在載入物件的同時,發出查詢語句,載入其關聯物件

*proxy(預設):這是hibernate對單端關聯的預設懶載入策略,即只有在呼叫到其關聯物件的方法的時候才真正發出查詢語句查詢其物件資料,其關聯物件是**類

*no-proxy:這種懶載入特性需要對類進行增強,使用no-proxy,其關聯物件不是**類

注:1、load缺省會開啟延遲載入,而get不支援延遲載入。

2、當查詢特定的資料庫中不存在的資料時,get會返回null,而load則丟擲異常。

延遲載入是乙個非常有用的策略,但是有時候也會影響效能,例如:如果我們確定某個物件的關聯物件會被使用,乾脆一次都載入上來,比延遲載入效能要好些。總之使用lazy要根據實際需求,這也是為什麼hibernate設定lazy有不同屬性的原因。

hibernate lazy 延遲載入

hibernate lazy策略可以使用在 標籤上,可以取值 true false 在hibernate3以上版本,預設是true 標籤上,可以取值 true false 需要類增強工具 標籤上,可以取值 true false extra 單端關聯上,可以取值 false proxy no prox...

hibernate lazy 延遲載入

hibernate lazy策略可以使用在 標籤上,可以取值 true false 在hibernate3以上版本,預設是true 標籤上,可以取值 true false 需要類增強工具 標籤上,可以取值 true false extra 單端關聯上,可以取值 false proxy no prox...

hibernate lazy屬性引數說明

lazy,延遲載入 lazy的有效期 只有在session開啟的時候才有效 session關閉後lazy就沒效了。lazy策略可以用在 標籤上 可以取值true false 標籤上,可以取值true false,這個特性需要類增強 等集合上,可以取值為true false extra 等標籤上,可以...