Java Hibernate對象(瞬時(shí)態(tài),持久態(tài),脫管態(tài))詳解
Java Hibernate對象
由于最近學(xué)習(xí)Java Hibernate,這里對Java Hibernate對象的幾種狀態(tài)進(jìn)行了資料整理, 有興趣的朋友可以看下。
瞬時(shí)(transient):數(shù)據(jù)庫中沒有數(shù)據(jù)與之對應(yīng),超過作用域會(huì)被JVM垃圾回收器回收,一般是new出來且與session沒有關(guān)聯(lián)的對象。
持久(persistent):數(shù)據(jù)庫中有數(shù)據(jù)與之對應(yīng),當(dāng)前與session有關(guān)聯(lián),并且相關(guān)聯(lián)的session沒有關(guān)閉,事務(wù)沒有提交;
持久對象狀態(tài)發(fā)生改變,在事務(wù)提交時(shí)會(huì)影響到數(shù)據(jù)庫(hibernate能檢測到)。
(當(dāng)對象save后,會(huì)將數(shù)據(jù)持久化,這時(shí)obj.set()后再提交事務(wù)hibernate會(huì)檢測到數(shù)據(jù)的修改。
而如果在save這個(gè)對象之前(即使是處在事務(wù)中),也即是還沒有持久化這個(gè)對象之前,用obj.set()則hibernate不能檢測到數(shù)據(jù)修改,不會(huì)影響數(shù)據(jù)庫)
脫管/游離(detached):數(shù)據(jù)庫中有數(shù)據(jù)與之對應(yīng),但當(dāng)前沒有session與之關(guān)聯(lián);脫管對象狀態(tài)發(fā)生改變,hibernate不能檢測到。
hibernate對象的三種狀態(tài),轉(zhuǎn)換圖:


Commit()會(huì)關(guān)閉session
面試圖:如果判斷一個(gè)對象處于怎樣的狀態(tài)?
主要的依據(jù)是: 1. 看該對象是否處于session, 2, 看在數(shù)據(jù)庫中有沒有對應(yīng)的記錄
總結(jié):
瞬時(shí)態(tài): 沒有session管理,同時(shí)數(shù)據(jù)庫沒有對應(yīng)記錄
持久態(tài): 有session管理,同時(shí)在數(shù)據(jù)庫中有記錄
脫管態(tài)/游離態(tài): 沒有session管理,但是在數(shù)據(jù)庫中有記錄.
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
java中timer的schedule和scheduleAtFixedRate方法區(qū)別詳解
這篇文章主要為大家詳細(xì)介紹了java中timer的schedule和scheduleAtFixedRate方法區(qū)別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
在X分鐘內(nèi)學(xué)會(huì)C#的入門簡明教程
C#是一個(gè)優(yōu)雅的、類型安全的面向?qū)ο笳Z言。使用C#,開發(fā)者可以在.NET框架下構(gòu)建安全而強(qiáng)大的應(yīng)用程序,閱讀本文可以快速的入門C#編程語言,需要的朋友可以參考下2014-03-03
使用JAR包中MANIFEST.MF的注意事項(xiàng)
這篇文章主要介紹了使用JAR包中MANIFEST.MF的注意事項(xiàng),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07
IntelliJ IDEA2020.1版本更新pom文件自動(dòng)導(dǎo)包的方法
這篇文章主要介紹了IntelliJ IDEA2020.1版本更新pom文件自動(dòng)導(dǎo)包的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
Java8之函數(shù)式接口及常用函數(shù)式接口講解
這篇文章主要介紹了Java8之函數(shù)式接口及常用函數(shù)式接口,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
一種類似JAVA線程池的C++線程池實(shí)現(xiàn)方法
線程池(thread pool)是一種線程使用模式。線程過多或者頻繁創(chuàng)建和銷毀線程會(huì)帶來調(diào)度開銷,進(jìn)而影響緩存局部性和整體性能。這篇文章主要介紹了一種類似JAVA線程池的C++線程池實(shí)現(xiàn)方法,需要的朋友可以參考下2019-07-07

