Hibernate中的lazy策略

2021-08-25 20:22:30 字數 954 閱讀 9939

hibernate lazy策略可以使用在:

* 可以取值true/false

* 標籤上,可以取值,true/false需要類增前工具

* 標籤上,可以取值:true/false/extra

* 單端關聯上,可以取值:false/proxy/noproxy

lazy概念,只有真正使用該物件時,才會建立,對於hibernate而言,真正使用的時候才會發出sql

hibernate支援lazy策略只有在session開啟狀態下有效,opensessioninview

1.class標籤上的lazy特性只對普通屬性起作用

預設配置下(lazy="true"),load查詢支援延遲載入,並且生成的物件為**物件

設定class標籤上的lazy="false",load查詢不再支援延遲載入,生成的物件為真實物件

class標籤上的lazy屬性,之對load方式的查詢起作用,get方式不支援延遲載入

預設配置下也就是支援延遲載入的情況下,get方式得到的物件再session關閉後依然可以得到物件的屬性

時而load方式 則會丟擲異常,因為延遲載入,真正訪問到物件的方法的的候要到資料庫中查詢,而此時session已經關閉了。

預設支援延遲載入情況下,load的時候,物件裡面的所有的普通屬性會被查詢出來。

2.hibernate在集合上的lazy策略,可以取值true/false/extra

標籤上的lazy不會影響到集合上的lazy特性

設定集合 標籤上的lazy="extra"會根據查詢內容發出智慧型的sql語句,不會查詢出所有關聯物件,例如students.size(),只會發出

select count(*) from…..

3.hibernate在單端關聯上的lazy策略,可以取值,false/proxy/noproxy

預設為proxy

標籤上的lazy屬性不會影響到單端關聯上的lazy特性

hibernate中lazy的使用

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

hibernate中lazy的使用

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

hibernate中lazy的使用

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