四種Hibernate資料載入方式

2021-08-31 20:32:48 字數 786 閱讀 6020

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較合理.

hibernate的懶載入的四種解決方式

懶載入的產生原因 當使用hibernate查詢乙個物件的時候,如果session關閉,在呼叫該物件關聯的集合或者物件的時候,會出現懶載入異常 解決方案 以使用者和角色為例 方案一 在session關閉之前,查詢物件關聯的集合或者物件,所有在業務層的方法上新增 public elecuserfindu...

Hibernate的四種狀態

hibernate 四種狀態 臨時狀態,持久化狀態,游離狀態 刪除狀態 如何區分hibernate的幾種狀態 1 物件是否在session快取中 2 在資料表中是否有記錄 可以上述條件進行組合的形式來窮盡四種種狀態,但是並不夠完全合理。因為四個狀態是可以進行轉換的,以資料儲存流程的形式來區分更為合理...

Activity的四種載入模式

activity之間的跳轉,或者說載入乙個新的activity,一般對於開發者來說,都不是乙個太難的問題。activity的載入還分為四種不同載入模式,靈活的使用合適的載入模式,可以避免產生大量的重複的activity,從而優化效能,減少系統資源消耗。四種載入模式具體為 這些啟動模式可以androi...