1. 程式人生 > >Hibernate是如何延遲載入的

Hibernate是如何延遲載入的

Hibernate是如何延遲載入的

(1)首先介紹一下延遲載入的幾種情況:

     當呼叫Session上的load()方法載入實體時,就會採用延遲載入

     當Session載入某個實體時,會對這個實體中的集合屬性值採用延遲載入

     當Session載入某個實體時,會對這個實體所單端關聯(one-to-one,many-to-one)的另一個實體物件採用延遲載入

     總結一句話延遲載入就是分為類的延遲載入和集合的延遲載入,即類的延遲載入包括用load()方法載入實體和載入實體所單向關聯的另一個實體的物件
(2)延遲載入的過程:

     Hibernate從資料庫獲取某一個物件資料、獲取某一個物件的集合屬性時,獲取某一個物件所關聯的另一個物件時,由於沒有使用該物件的資料,hibernate並不從資料庫載入真正的資料。而是為該物件建立一個代理物件來代表這個物件,這個物件上的所有屬性都為預設值,只有在真正的需要該物件的資料時才建立這個真實的物件,真正的從資料庫中載入資料。

注:如果訪問的是物件識別符號屬性,沒有必要初始化代理
(3)延遲載入的使用

     因為在類載入和集合載入的時候都會遇到懶載入的問題,當我們在查詢的時候不需要懶載入,因為通過懶載入不能查到是情況下,可以在class類標籤或者是set集合的標籤中設定lazy=false,表示立即載入,而true表示懶載入。

本文原文地址:https://blog.csdn.net/znoone/article/details/79077132