Hibernate檢索策略
類級別的檢索策略:
首先要明確的是類級別的懶加載是針對session對象的load方法的,對get方法根本就沒有意義。類級別的檢索策略就是在class上添加lazy屬性即:lazy=”true/false”
lazy=”true”,那麼load()方法就可以使用懶加載
lazy=”false”,那麼load()方法就不能使用懶加載了,只能使用立即檢索。
備註:懶加載要注意一個問題就是謹防出現懶加載異常。
Set集合屬性的檢索策略:(lazy、fetch、batch-size)
set集合下面也有lazy屬性。(true/false/extra) 通常使用true即默認懶加載開啓
set集合下面的fetch屬性。(join/select/subselect)默認使用的是join
join:表示的是迫切左外連接(即:使用左外鏈接進行查詢, 且把集合屬性進 行初始化)
select:表示自己手寫sql外連接之類的
subselect:表示使用子查詢(挺好的)作爲 where 子句的 in 的條件出現 , 子查詢查詢所有 1 的一端的 ID。
set集合下面的batch-size: 作用: 一次初始化 1 的這一段代理對象的個數
舉例:Student<——>Teacher雙向關聯
teacher下就有有一個set集合屬性,如果lazy設置爲true表示在檢索teacher的時候它會使用懶加載機制(即不會立即把set集合下面的學生屬性給查出來),犯之亦然。
使用檢索策略的宗旨
不浪費內存(即:只拿我們想要的數據)和提高查詢效率(即:儘量少發HQL語句)
懶加載機制就是爲我們實現這個宗旨的手段和策略。