檢索策略的概念
- hibernate檢索策略分為兩類:
(1)立即查詢:根據(jù)id查詢颅围,調(diào)用get方法,一調(diào)用get方法馬上發(fā)送語句查詢數(shù)據(jù)庫
1.png
(2)延遲查詢:根據(jù)id查詢恨搓,還有l(wèi)oad方法院促,調(diào)用load方法不會(huì)馬上發(fā)送語句查詢數(shù)據(jù),只有得到對象里面的值時(shí)候才會(huì)發(fā)送語句查詢數(shù)據(jù)庫
2.png
- 延遲查詢分成兩類:
(1)類級別延遲:根據(jù)id查詢返回實(shí)體類對象斧抱,調(diào)用load方法不會(huì)馬上發(fā)送語句
(2)關(guān)聯(lián)級別延遲:
查詢某個(gè)客戶常拓,再查詢這個(gè)客戶的所有聯(lián)系人,查詢客戶的所有聯(lián)系人的過程是否需要延遲辉浦,這個(gè)過程稱為關(guān)聯(lián)級別延遲
3.png
關(guān)聯(lián)級別延遲操作
- 在映射文件中進(jìn)行配置實(shí)現(xiàn)
(1)根據(jù)客戶得到所有的聯(lián)系人弄抬,在客戶映射文件中配置 - 在set標(biāo)簽上使用屬性
(1)fetch:值select(默認(rèn))
(2)lazy:值
true:延遲(默認(rèn))
false:不延遲
extra:極其延遲
4.png
5.png
(1)調(diào)用get之后,發(fā)送兩條sql語句
6.png
7.png
(1)極其懶惰宪郊,要什么值給什么值
8.png
批量抓取
- 查詢所有的客戶掂恕,返回list集合荔茬,遍歷list集合,得到每個(gè)客戶竹海,得到每個(gè)客戶的所有聯(lián)系人
(1)上面操作代碼,發(fā)送多條sql語句
9.png
- 在客戶的映射文件中丐黄,set標(biāo)簽配置
(1)batch-size值斋配,值越大發(fā)送語句越少
10.png