hibernate 的三種狀態(tài)

2018-07-03 17:03 更新

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

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

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

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

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

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

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)