HIbernate的三种状态
? ?1.瞬時(shí)狀態(tài)(Transient)
通過(guò)new創(chuàng)建對(duì)象后,對(duì)象并沒(méi)有立刻持久化,他并未對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)有任何的關(guān)聯(lián),此時(shí)java對(duì)象的狀態(tài)為瞬時(shí)狀態(tài),Session對(duì)于瞬時(shí)狀態(tài)的java對(duì)象是一無(wú)所知的,當(dāng)對(duì)象不再被其他對(duì)象引用時(shí),它的所有數(shù)據(jù)也就丟失了,對(duì)象將會(huì)被java虛擬機(jī)按照垃圾回收機(jī)制處理。
? ?2.持久狀態(tài)(Persistent)?
當(dāng)對(duì)象與Session管理時(shí),他就處于持久狀態(tài)。處于持久狀態(tài)的對(duì)象擁有數(shù)據(jù)庫(kù)表示(數(shù)據(jù)庫(kù)中的主鍵值)。
? ?3.游離狀態(tài)(Detached) ??
處于持久狀態(tài)的對(duì)象,脫離與其關(guān)聯(lián)的Sessionn的管理后,對(duì)象就處于游離狀態(tài)。
?
三種對(duì)象見(jiàn)的轉(zhuǎn)換
使用new關(guān)鍵字構(gòu)建的對(duì)象,該對(duì)象的狀態(tài)就是瞬時(shí)狀態(tài)
1.瞬時(shí)狀態(tài)轉(zhuǎn)為持久狀態(tài)
使用session對(duì)象的save()或者seavOrUpdate()方法保存對(duì)象后,該對(duì)象的狀態(tài)由瞬時(shí)轉(zhuǎn)換為持久狀態(tài)。
使用Session對(duì)象的get()或load()方法獲取對(duì)象,該對(duì)象的狀態(tài)是持久狀態(tài)
2.持久狀態(tài)轉(zhuǎn)為瞬時(shí)狀態(tài)
執(zhí)行Session對(duì)象的delete()方法后,對(duì)象由原來(lái)的持久狀態(tài)變?yōu)樗矔r(shí)狀態(tài),因?yàn)榇藭r(shí)刻對(duì)象沒(méi)有與任何的數(shù)據(jù)庫(kù)數(shù)據(jù)關(guān)聯(lián)。
3.持久狀態(tài)轉(zhuǎn)為游
執(zhí)行了Session對(duì)象的evict(),clear(),close()方法,對(duì)象由原來(lái)的持久狀態(tài)轉(zhuǎn)為游離狀態(tài);
4.游離狀態(tài)轉(zhuǎn)為持久狀態(tài)
重新獲取Session對(duì)象,執(zhí)行Session對(duì)象的update()或saveOrUpdate()方法,對(duì)象游離狀態(tài)轉(zhuǎn)為持久狀態(tài),該對(duì)象再次與session關(guān)聯(lián),
5.游離狀態(tài)轉(zhuǎn)為瞬時(shí)狀態(tài)
執(zhí)行Session()對(duì)象的delete()方法時(shí),對(duì)象由游離狀態(tài)轉(zhuǎn)為瞬時(shí)狀態(tài).
處于瞬時(shí)狀態(tài)或游離狀態(tài)的對(duì)象不再被其他對(duì)象引用時(shí),會(huì)被java虛擬機(jī)按照垃圾回收機(jī)制處理.
轉(zhuǎn)載于:https://www.cnblogs.com/www-datou-com/p/6269179.html
總結(jié)
以上是生活随笔為你收集整理的HIbernate的三种状态的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 平安银行灵用金怎么还?可以提前还款吗?
- 下一篇: KVM安装、镜像创建(一)