**
hibernate資料載入方式:
1、即時載入(immediate loading)
當實體載入完成後,立即載入與實體相關聯的資料。即當實體載入完成後,hibernate自動立即讀取與實體相關聯的資料,並且填充到實體對應的屬性中。這種載入通常有多條select語句,即select實體資料後,同時select實體相關聯的資料。
2、延遲載入(lazy loading)
實體載入時,其關聯資料並不是立即讀取,而是當關聯資料第一次被訪問時再進行讀取,這種載入方式在第一次訪問關聯資料時,必須在同乙個session中,否則會報session已關閉錯誤。
延遲載入通過在實體的hbm檔案中的對應屬性中設定lazy="true"實現。hibernate3預設的載入方式是延遲載入。即預設lazy="true",主要用於one-to-many場合。
3、預先載入(eager loading)
預先載入時,實體及關聯物件同時讀取,與即時載入類似,但是預先載入是使用"outer-join"通過一條select語句同時讀取。
注意:當實體間關聯比較複雜時,比如多層關聯,hibernate生成的"outer join sql"可能過於複雜,此時可以通過設定全域性變數(hibernate.max_fetch_depth)限定join的層次(一般設定為5層)。
4、批量載入(batch loading)
對於即時和延遲載入,可以採用批量載入進行優化。
批量載入就是通過批量提交多個限定條件,一次多個限定條件的資料讀取。同時在實體對映檔案中的class節點,通過配置"batch-size"引數開啟批量載入機制,並限定每次批量載入資料的數量,一般來說該值<10較合理.
比如:
select * from test where id=1;
select * from test where id=2;
我們可以整合成一條語句:
select * from test where id=1 ro id=2;
這就是所謂的批量載入機制。
Hibernate的載入方式
1 即時載入 即時載入是指,當實體載入完成後,立即載入該實體所關聯的資料。我們以前面討論一對多關聯對映的例子為例 客戶和客戶訂購的貨物是一對多的關係,所以我們在配置客戶實體類的集合時採用了下面的配置 lazy false 我們注意,在set元素的lazy屬性被設定為false,此時就啟動了即時載入,...
四種Hibernate資料載入方式
1 即時載入 immediate loading 當實體載入完成後,立即載入與實體相關聯的資料。即當實體載入完成後,hibernate自動立即讀取與實體相關聯的資料,並且填充到實體對應的屬性中。這種載入通常有多條select語句,即select實體資料後,同時select實體相關聯的資料。2 延遲載...
hibernate 資料載入
color red hibernate資料載入方式 color 1 即時載入 immediate loading 當實體載入完成後,立即載入與實體相關聯的資料。即當實體載入完成後,hibernate自動立即讀取與實體相關聯的資料,並且填充到實體對應的屬性中。這種載入通常有多條select語句,即se...