1. 程式人生 > >Hibernate中session get 和load的區別,物件生命週期

Hibernate中session get 和load的區別,物件生命週期

Hibernate中會話get和load的區別

get()方法會立即查詢(快取中有則不查詢),load()懶載入,直到你需要用到資料的時候才去查資料庫

找不到物件時get()是返回NULL,load()會拋異常;

因此使用load()方法時,要確認查詢的主鍵ID是一定存在的。

load()方法的延時載入也可以在mapping檔案裡配置 

<class name="User" table="user" lazy="false">

lzay預設為true,改為false則為非懶載入。

物件生命週期:

Hibernate中物件有三種狀態:臨時狀態(Transient),持久狀態(Persistent),遊離狀態(Detached)。

 

 

儲存:儲存,此時Java物件已經與資料庫記錄建立的關係。將物件從臨時狀態變為持久化狀態或者將遊離狀態的資料變為持久狀態。

saveOrUpdate:儲存或者更新,如果沒有與資料庫記錄所對應的oid,則執行儲存,如果有,則執行更新。將物件從臨時狀態變為持久化狀態或者將遊離狀態的資料變為持久狀態。

delete:刪除物件,將物件從持久化狀態或者遊離狀態變為臨時狀態。

close:關閉session,先將session清空,然後再關閉。將物件從持久狀態變為遊離狀態。

clear:清空session快取。將物件從持久狀態變為遊離狀態。

evict:清除指定的物件。將物件從持久狀態變為遊離狀態。