Hibernate的延遲檢索和立即檢索

2022-05-11 17:38:06 字數 971 閱讀 7908

一、立即檢索

所謂立即檢索就是立即裝載和初始化檢索方法指定的物件,即使session關閉了,依然可以正常訪問。立即檢索策略的啟用是通過在對映配置檔案中將lazy實行值設定為false實現的。

通俗講就是立即檢索在載入時就把所有和主表關聯的表載入到記憶體中,無論調不呼叫它們。

優點是快,缺點是佔記憶體

註解上的使用方法:  

1、在po層的呼叫物件上(例如父子關係中的主表父親表)getson方法上加上註解@fetch(fetchmode.join)

2、將load方法改為get方法

二、延遲檢索(懶載入)

延遲檢索是hibernate3的預設檢索策略,所謂延遲檢索就是等到訪問的時候才載入和初始化指定的物件,如果在session例項關閉之前沒有初始化延遲檢索出來的物件,如果在session例項關閉之前沒有初始化延遲檢索出來的物件,session例項關閉後在訪問時就會丟擲異常。

優點是省記憶體,缺點是慢

三、解決延遲檢索找不到資料的方法:

為了確保延遲檢索的物件在session關閉後仍能被正常訪問,可以使用hibernate的isinitialized(object object)用於判斷物件是否被初始化,再用initialize對指定的物件進行手動   初始化處理。

public

void

go()

public

father2 query()

}catch

(exception e)

session.close();

return

s; }

以上**就是在query中雖然開了對話session,可是並沒有自動載入son的內容,之後就關閉了對話,而在go方法中卻要使用son中的內容。這時就需要使用try中的判斷來手動建立乙個son物件。

開發時候一般使用懶載入。

hibernate的檢索策略

立即檢索 延遲檢索 迫切左外連線檢索 以下 為類級別和關聯級別可選的檢索策略及預設的檢索策略 檢索策略的作用域 可選的檢索策略 預設的檢索策略 執行時行為受影響的 session 的檢索方法 類級別立即載入 延遲載入 立即檢索 load 方法關聯級別 立即載入 延遲載入 迫切左外連線檢索 多對一或者...

hibernate檢索的使用

1.hibernate中檢索主要有以下 lazy true false extra fetch select subselect join迫切的左外鏈結 batch size 檢索的數量 cascade all 級聯操作 2.第一種lazy的使用 2.1 classes.hbm.xml hibern...

Hibernate的檢索策略

hibernate 的中的session依照load 和get 按照引數的制定oid objctid 去載入乙個持久化物件。另外query.list 方法則按照hql語句去載入持久化的物件。以上的幾個方式都可以實現hibernate的持久化物件的載入。如果有不懂hibernate物件的 臨時狀態 游...