一家反欺诈公司的面试经历——3.hibernate中的session的三种状态
hibernate中的對象有三種狀態(tài):?瞬時(shí)狀態(tài)?(Transient),持久狀態(tài)?(Persistent), 游離狀態(tài)
1.瞬時(shí)狀態(tài)?(Transient)
(1)?不和?Session?實(shí)例關(guān)聯(lián)
(2)?在數(shù)據(jù)庫中沒有和瞬時(shí)對象關(guān)聯(lián)的記錄
2. 持久狀態(tài)?(Persistent)
持久的實(shí)例在數(shù)據(jù)庫中有對應(yīng)的記錄,并擁有一個(gè)持久化標(biāo)識?(identifier).持久對象總是與?Session?和?Transaction?相關(guān)聯(lián),在一個(gè)?Session?中,對持久對象的改變不會(huì)馬上對數(shù)據(jù)庫進(jìn)行變更,而必須在?Transaction?終止,也就是執(zhí)行?commit()?之后,才在數(shù)據(jù)庫中真正運(yùn)行?SQL?進(jìn)行變更,持久對象的狀態(tài)才會(huì)與數(shù)據(jù)庫進(jìn)行同步。在同步之前的持久對象稱為臟?(dirty)?對象。
瞬時(shí)對象轉(zhuǎn)為持久對象:
(1)?通過?Session?的?save()?和?saveOrUpdate()?方法把一個(gè)瞬時(shí)對象與數(shù)據(jù)庫相關(guān)聯(lián),這個(gè)瞬時(shí)對象就成為持久化對象。(2)?使用?fine(),get(),load()?和?iterater()?待方法查詢到的數(shù)據(jù)對象,將成為持久化對象。?持久化對象的特點(diǎn):?(1)?和?Session?實(shí)例關(guān)聯(lián)
(2)?在數(shù)據(jù)庫中有和持久對象關(guān)聯(lián)的記錄
3.?脫管狀態(tài)?(Detached)
與持久對象關(guān)聯(lián)的?Session?被關(guān)閉后,對象就變?yōu)槊摴軐ο蟆γ摴軐ο蟮囊靡廊挥行?#xff0c;對象可繼續(xù)被修改。?脫管對象特點(diǎn):
(1)?本質(zhì)上和瞬時(shí)對象相同(2)?只是比愛瞬時(shí)對象多了一個(gè)數(shù)據(jù)庫記錄標(biāo)識值?id.?持久對象轉(zhuǎn)為脫管對象:
當(dāng)執(zhí)行?close()?或?clear(),evict()?之后,持久對象會(huì)變?yōu)槊摴軐ο蟆?瞬時(shí)對象轉(zhuǎn)為持久對象:
通過?Session?的?update(),saveOrUpdate()?和?lock()?等方法,把脫管對象變?yōu)槌志脤ο蟆?/p>
?
三種狀態(tài)相互轉(zhuǎn)化的狀態(tài)圖如下:
總結(jié)
以上是生活随笔為你收集整理的一家反欺诈公司的面试经历——3.hibernate中的session的三种状态的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: KM匹配 hdu2853(模版
- 下一篇: xgboost算法_手把手机器学习实战系