Hibernate檢索策略及批量抓取

2022-05-03 10:06:17 字數 2290 閱讀 3423

1 hibernate檢索策略分為兩類:

(1)立即查詢:根據id查詢,呼叫get方法,一呼叫get方法馬上傳送語句查詢資料庫

//

根據cid=1客戶

//執行get方法之後,是否傳送sql語句

//呼叫get方法馬上傳送sql語句查詢資料庫

customer customer = session.get(customer.class, 1);

(2)延遲查詢:根據id查詢,還有load方法,呼叫load方法不會馬上傳送語句查詢資料,只有得到物件裡面的值時候才會傳送語句查詢資料庫

/*

* 1 呼叫load方法之後,不會馬上傳送sql語句

* (1)返回物件裡面只有 id值

* * 2 得到物件裡面不是id的其他值時候才會傳送語句

* */customer customer = session.load(customer.class, 2);//

不會傳送

system.out.println(customer.getcid());

//不會傳送

system.out.println(customer.getcustname());

//會傳送

2 延遲查詢分成兩類:

(1)類級別延遲:根據id查詢返回實體類物件,呼叫load方法不會馬上傳送語句

//上面的**

(2)關聯級別延遲:

- 查詢某個客戶,再查詢這個客戶的所有聯絡人,查詢客戶的所有聯絡人的過程是否需要延遲,這個過程稱為關聯級別延遲

//

根據cid=1客戶,再查詢這個客戶裡面所有聯絡人

customer customer = session.get(customer.class, 1);

//再查詢這個客戶裡面所有聯絡人

//直接得到客戶裡面聯絡人的set集合

//得到set集合,沒有傳送語句

setlinkman =customer.getsetlinkman();

//傳送語句

system.out.println(linkman.size());

1 在對映檔案中進行配置實現

(1)根據客戶得到所有的聯絡人,在客戶對映檔案中配置

2 在set標籤上使用屬性

(1)fetch:值select(預設)

(2)lazy:值

- true:延遲(預設)

- false:不延遲

- extra:極其延遲

(1)呼叫get之後,傳送兩條sql語句

<

set

name

="setlinkman"

batch-size

="10"

fetch

="select"

lazy

="extra"

>

(1)極其懶惰,要什麼值給什麼值1 查詢所有的客戶,返回list集合,遍歷list集合,得到每個客戶,得到每個客戶的所有聯絡人

(1)上面操作**,傳送多條sql語句

//

查詢所有客戶

criteria criteria = session.createcriteria(customer.class

); list

list =criteria.list();

//得到每個客戶裡面所有的聯絡人

for(customer customer : list)

}

2 在客戶的對映檔案中,set標籤配置

(1)batch-size值,值越大傳送語句越少

<

set

name

="setlinkman"

batch-size

="10"

>

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...