hibernate 的三種狀態(tài)

2018-07-03 17:03 更新

臨時狀態(tài)(Transient):

當new一個實體對象后, 這個對象處于臨時狀態(tài), 即這個對象只是一個保存臨時數(shù)據(jù)的內(nèi)存區(qū)域, 如果沒有變量引用這個對象, 則會被jre垃圾回收機制回收. 這個對象所保存的數(shù)據(jù)與數(shù)據(jù)庫沒有任何關(guān)系, 除非通過Session的save或者SaveOrUpdate把臨時對象與數(shù)據(jù)庫關(guān)聯(lián), 并把數(shù)據(jù)插入或者更新到數(shù)據(jù)庫, 這個對象才轉(zhuǎn)換為持久對象.

持久狀態(tài)(Persistent):

持久化對象的實例在數(shù)據(jù)庫中有對應的記錄, 并擁有一個持久化表示(ID). 對持久化對象進行delete操作后, 數(shù)據(jù)庫中對應的記錄將被刪除, 那么持久化對象與數(shù)據(jù)庫記錄不再存在對應關(guān)系, 持久化對象變成臨時狀態(tài). 持久化對象被修改變更后, 不會馬上同步到數(shù)據(jù)庫, 直到數(shù)據(jù)庫事務提交. 在同步之前, 持久化對象是臟的(Dirty).

游離狀態(tài)(Detached):

當Session進行了Close、Clear或者evict后, 持久化對象雖然擁有持久化標識符和與數(shù)據(jù)庫對應記錄一致的值, 但是因為會話已經(jīng)消失, 對象不在持久化管理之內(nèi), 所以處于游離. 游離狀態(tài)的對象與臨時狀態(tài)對象是十分相似的, 只是它還含有持久化標識.

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號