1 hibernate檢索策略分為兩類:
(1)立即查詢:根據id查詢,呼叫get方法,一呼叫get方法馬上傳送語句查詢資料庫
//(2)延遲查詢:根據id查詢,還有load方法,呼叫load方法不會馬上傳送語句查詢資料,只有得到物件裡面的值時候才會傳送語句查詢資料庫根據cid=1客戶
//執行get方法之後,是否傳送sql語句
//呼叫get方法馬上傳送sql語句查詢資料庫
customer customer = session.get(customer.class, 1);
/*2 延遲查詢分成兩類:* 1 呼叫load方法之後,不會馬上傳送sql語句
* (1)返回物件裡面只有 id值
* * 2 得到物件裡面不是id的其他值時候才會傳送語句
* */customer customer = session.load(customer.class, 2);//
不會傳送
system.out.println(customer.getcid());
//不會傳送
system.out.println(customer.getcustname());
//會傳送
(1)類級別延遲:根據id查詢返回實體類物件,呼叫load方法不會馬上傳送語句
//上面的**
(2)關聯級別延遲:
- 查詢某個客戶,再查詢這個客戶的所有聯絡人,查詢客戶的所有聯絡人的過程是否需要延遲,這個過程稱為關聯級別延遲
//1 在對映檔案中進行配置實現根據cid=1客戶,再查詢這個客戶裡面所有聯絡人
customer customer = session.get(customer.class, 1);
//再查詢這個客戶裡面所有聯絡人
//直接得到客戶裡面聯絡人的set集合
//得到set集合,沒有傳送語句
setlinkman =customer.getsetlinkman();
//傳送語句
system.out.println(linkman.size());
(1)根據客戶得到所有的聯絡人,在客戶對映檔案中配置
2 在set標籤上使用屬性
(1)fetch:值select(預設)
(2)lazy:值
- true:延遲(預設)
- false:不延遲
- extra:極其延遲
(1)呼叫get之後,傳送兩條sql語句
<(1)極其懶惰,要什麼值給什麼值1 查詢所有的客戶,返回list集合,遍歷list集合,得到每個客戶,得到每個客戶的所有聯絡人set
name
="setlinkman"
batch-size
="10"
fetch
="select"
lazy
="extra"
>
(1)上面操作**,傳送多條sql語句
//2 在客戶的對映檔案中,set標籤配置查詢所有客戶
criteria criteria = session.createcriteria(customer.class
); list
list =criteria.list();
//得到每個客戶裡面所有的聯絡人
for(customer customer : list)
}
(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...