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