您好,登錄后才能下訂單哦!
怎么在Java中實(shí)現(xiàn)實(shí)體對象的三種狀態(tài)?相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
Java主要應(yīng)用于:1. web開發(fā);2. Android開發(fā);3. 客戶端開發(fā);4. 網(wǎng)頁開發(fā);5. 企業(yè)級應(yīng)用開發(fā);6. Java大數(shù)據(jù)開發(fā);7.游戲開發(fā)等。
最新的Hibernate文檔中為Hibernate對象定義了四種狀態(tài)(原來是三種狀態(tài),面試的時候基本上問的也是三種狀態(tài)),分別是:瞬時態(tài)(new, or transient)、持久態(tài)(managed, or persistent)、游狀態(tài)(detached)和移除態(tài)(removed,以前Hibernate文檔中定義的三種狀態(tài)中沒有移除態(tài)),如下圖所示,就以前的Hibernate文檔中移除態(tài)被視為是瞬時態(tài)。
瞬時態(tài):當(dāng)new一個實(shí)體對象后,這個對象處于瞬時態(tài),即這個對象只是一個保存臨時數(shù)據(jù)的內(nèi)存區(qū)域,如果沒有變量引用這個對象,則會被JVM的垃圾回收機(jī)制回收。這個對象所保存的數(shù)據(jù)與數(shù)據(jù)庫沒有任何關(guān)系,除非通過Session的save()、saveOrUpdate()、persist()、merge()方法把瞬時態(tài)對象與數(shù)據(jù)庫關(guān)聯(lián),并把數(shù)據(jù)插入或者更新到數(shù)據(jù)庫,這個對象才轉(zhuǎn)換為持久態(tài)對象。持久態(tài):持久態(tài)對象的實(shí)例在數(shù)據(jù)庫中有對應(yīng)的記錄,并擁有一個持久化標(biāo)識(ID)。對持久態(tài)對象進(jìn)行delete操作后,數(shù)據(jù)庫中對應(yīng)的記錄將被刪除,那么持久態(tài)對象與數(shù)據(jù)庫記錄不再存在對應(yīng)關(guān)系,持久態(tài)對象變成移除態(tài)(可以視為瞬時態(tài))。持久態(tài)對象被修改變更后,不會馬上同步到數(shù)據(jù)庫,直到數(shù)據(jù)庫事務(wù)提交。游離態(tài):當(dāng)Session進(jìn)行了close()、clear()、evict()或flush()后,實(shí)體對象從持久態(tài)變成游離態(tài),對象雖然擁有持久和與數(shù)據(jù)庫對應(yīng)記錄一致的標(biāo)識值,但是因?yàn)閷ο笠呀?jīng)從會話中清除掉,對象不在持久化管理之內(nèi),所以處于游離態(tài)(也叫脫管態(tài))。游離態(tài)的對象與臨時狀態(tài)對象是十分相似的,只是它還含有持久化標(biāo)識。
看完上述內(nèi)容,你們掌握怎么在Java中實(shí)現(xiàn)實(shí)體對象的三種狀態(tài)的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。