hibernate 資料載入

2021-08-31 16:52:34 字數 1005 閱讀 1651

[color=red]hibernate資料載入方式:[/color]

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資料載入get load的區別

session.load get方法均可以根據指定的實體類和id從資料庫讀取記錄,並返回與之對應的實體物件。其區別在於 如果未能發現符合條件的記錄,get方法返回null,而load方法會丟擲乙個objectnotfoundexception。load方法可返回實體的 類例項,而get方法永遠直接返...

hibernate資料載入get load的區別

session.load get方法均可以根據指定的實體類和id從資料庫讀取記錄,並返回與之對應的實體物件。其區別在於 如果未能發現符合條件的記錄,get方法返回null,而load方法會丟擲乙個objectnotfoundexception。load方法可返回實體的 類例項,而get方法永遠直接返...

Hibernate資料載入方式

hibernate資料載入方式 1 即時載入 immediate loading 當實體載入完成後,立即載入與實體相關聯的資料。即當實體載入完成後,hibernate自動立即讀取與實體相關聯的資料,並且填充到實體對應的屬性中。這種載入通常有多條select語句,即select實體資料後,同時sele...