Hibernate 檢索策略屬性

2021-07-24 07:23:16 字數 1188 閱讀 5476

一.在裡面設定lazy屬性,

如果是true是指延遲檢索,如果是false是立即檢索

注意:這個屬性只適用於session.load()方法,對於session.get()方法和hql查詢都是立即檢索也就是不起作用

二.一對多和多對多的檢索策略

1.在set中使用lazy屬性,lazy取值為false時是指立即檢索,是true時是指延遲檢索,是extra時是指增強延遲檢索

當使用延遲檢索時可以通過 hibernate.initialize() 靜態方法顯式初始化,比如:hibernate.initialize(customer.getset());

2.元素有乙個 batch-size 屬性, 用來為延遲檢索策略或立即檢索策略設定批量檢索的數量. 批量檢索能減少 select 

語句的數目, 提高延遲檢索或立即檢索的執行效能.比如:batch-size=3

3.在set裡面設定fetch屬性: 取值為 「select」 或 「subselect」 時, 決定初始化 orders 的查詢語句的形式;

set 集合的 fetch 屬性: 確定初始化 orders 集合的方式. 

①.預設值為 select. 通過正常的方式來初始化 set 元素,lazy和batch-size都起作用

②.可以取值為 subselect. 通過子查詢的方式來初始化所有的 set 集合.lazy起作用而batch-size失效

③.若取值為 join. 則在載入 1 的一端的物件時, 使用迫切左外連線(使用左外鏈結進行查詢, 且把集合屬

性進行初始化)的方式檢索 n 的一端的集合屬性,lazy失效而batch-size起作用(hql 查詢忽略 fetch=join 的取值)

三.多對一和一對一關聯的檢索策略

1.在裡面使用lazy屬性,lazy 取值為 proxy 和 false 分別代表對應對應的

屬性採用延遲檢索和立即檢索

2.在裡面使用fetch屬性,只能去select和join值

①..預設值為 join. 使用迫切左外連線(使用左外鏈結進行查詢, 忽略 lazy 屬性. 而batch-size起作用(hql 查詢忽略 fetch=join 的取值)

②.使用select時lazy和batch-size都起作用

3.使用batch-size時,該屬性需要設定在 1 那一端的 class 元素中: 

作用: 一次初始化 1 的這一段**物件的個數. 

Hibernate 檢索策略

在預設情況下,當hibernate從資料庫中載入物件時,會同時載入所有關聯的物件.但實際應用中可能不需要使用其關聯的物件,這樣就可能通過設定hibernate的檢索策略,來優化檢索效能.hiberante提供了3種檢索策略 1 立即檢索 2 延遲檢索 3 迫切左外連線檢索 下面先從概念上去理解,先在...

Hibernate檢索策略

預設的檢索策略是立即檢索。在hibernate對映檔案中,通過在上配置 lazy屬性來確定檢索策略。對於session的檢索方式,類級別檢索策略僅適用於load方法 也就說,對於get qurey檢索,持久化物件都會被立即載入而不管lazy是false還是true.一般來說,我們檢索物件就是要訪問它...

hibernate 檢索策略

本文主要是學習hibernate的檢索策略 1 類級別的檢索策略有兩種一種是立即檢索,一種是延遲檢索,僅影響load操作 立即檢索,是類的預設檢索方式,或者設定了lazy false 也是立即檢索方式,即執行load操作之後會立馬返回相應的資料。延遲檢索,當類設定lazy true 時,hibern...