hibernate如何實現延遲加載

(1)首先介紹一下延遲加載的幾種情況:
       當調用Session上的load()方法加載實體時,就會採用延遲加載
       當Session加載某個實體時,會對這個實體中的集合屬性值採用延遲加載
       當Session加載某個實體時,會對這個實體所單端關聯(one-to-one,many-to-one)的另一個實體對象採用延遲加載
       總結一句話延遲加載就是分爲類的延遲加載和集合的延遲加載,即類的延遲加載包括用load()方法加載實體和加載實體所單向關聯的另一個實體的對象
(2)延遲加載的過程
       Hibernate從數據庫獲取某一個對象數據、獲取某一個對象的集合屬性時,獲取某一個對象所關聯的另一個對象時,
       由於沒有使用該對象的數據,hibernate並不從數據庫加載真正的數據。而是爲該對象創建一個代理對象來代表這個對象,
       這個對象上的所有屬性都爲默認值,只有在真正的需要該對象的數據時才創建這個真實的對象,真正的從數據庫中加載數據。
       注:如果訪問的是對象標識符屬性,沒有必要初始化代理
(3)延遲加載的使用
       因爲在類加載和集合加載的時候都會遇到懶加載的問題,當我們在查詢的時候不需要懶加載,因爲通過懶加載不能查到是情況下,
       可以在class類標籤或者是set集合的標籤中設置lazy=false,表示立即加載,而true表示懶加載

ps:有關hibernate的延遲加載,更多的可以參考 http://bbs.itheima.com/thread-8863-1-1.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章