Java Hibernate對(duì)象(瞬時(shí)態(tài),持久態(tài),脫管態(tài))詳解
Java Hibernate對(duì)象
由于最近學(xué)習(xí)Java Hibernate,這里對(duì)Java Hibernate對(duì)象的幾種狀態(tài)進(jìn)行了資料整理, 有興趣的朋友可以看下。
瞬時(shí)(transient):數(shù)據(jù)庫(kù)中沒(méi)有數(shù)據(jù)與之對(duì)應(yīng),超過(guò)作用域會(huì)被JVM垃圾回收器回收,一般是new出來(lái)且與session沒(méi)有關(guān)聯(lián)的對(duì)象。
持久(persistent):數(shù)據(jù)庫(kù)中有數(shù)據(jù)與之對(duì)應(yīng),當(dāng)前與session有關(guān)聯(lián),并且相關(guān)聯(lián)的session沒(méi)有關(guān)閉,事務(wù)沒(méi)有提交;
持久對(duì)象狀態(tài)發(fā)生改變,在事務(wù)提交時(shí)會(huì)影響到數(shù)據(jù)庫(kù)(hibernate能檢測(cè)到)。
(當(dāng)對(duì)象save后,會(huì)將數(shù)據(jù)持久化,這時(shí)obj.set()后再提交事務(wù)hibernate會(huì)檢測(cè)到數(shù)據(jù)的修改。
而如果在save這個(gè)對(duì)象之前(即使是處在事務(wù)中),也即是還沒(méi)有持久化這個(gè)對(duì)象之前,用obj.set()則hibernate不能檢測(cè)到數(shù)據(jù)修改,不會(huì)影響數(shù)據(jù)庫(kù))
脫管/游離(detached):數(shù)據(jù)庫(kù)中有數(shù)據(jù)與之對(duì)應(yīng),但當(dāng)前沒(méi)有session與之關(guān)聯(lián);脫管對(duì)象狀態(tài)發(fā)生改變,hibernate不能檢測(cè)到。
hibernate對(duì)象的三種狀態(tài),轉(zhuǎn)換圖:
Commit()會(huì)關(guān)閉session
面試圖:如果判斷一個(gè)對(duì)象處于怎樣的狀態(tài)?
主要的依據(jù)是: 1. 看該對(duì)象是否處于session, 2, 看在數(shù)據(jù)庫(kù)中有沒(méi)有對(duì)應(yīng)的記錄
總結(jié):
瞬時(shí)態(tài): 沒(méi)有session管理,同時(shí)數(shù)據(jù)庫(kù)沒(méi)有對(duì)應(yīng)記錄
持久態(tài): 有session管理,同時(shí)在數(shù)據(jù)庫(kù)中有記錄
脫管態(tài)/游離態(tài): 沒(méi)有session管理,但是在數(shù)據(jù)庫(kù)中有記錄.
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
idea使用spring Initializr 快速搭建springboot項(xiàng)目遇到的坑
這篇文章主要介紹了idea使用spring Initializr 快速搭建springboot項(xiàng)目遇到的坑,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11Spring實(shí)戰(zhàn)之調(diào)用實(shí)例工廠方法創(chuàng)建Bean操作示例
這篇文章主要介紹了Spring實(shí)戰(zhàn)之調(diào)用實(shí)例工廠方法創(chuàng)建Bean操作,結(jié)合實(shí)例形式分析了實(shí)例工廠方法創(chuàng)建Bean相關(guān)配置、實(shí)現(xiàn)方法及操作注意事項(xiàng),需要的朋友可以參考下2019-11-11Spring實(shí)戰(zhàn)之類級(jí)別緩存實(shí)現(xiàn)與使用方法
這篇文章主要介紹了Spring實(shí)戰(zhàn)之類級(jí)別緩存實(shí)現(xiàn)與使用方法,結(jié)合實(shí)例形式分析了Spring類級(jí)別緩存配置、屬性、領(lǐng)域模型等相關(guān)操作技巧,需要的朋友可以參考下2020-01-01SpringBoot集成Kafka 配置工具類的詳細(xì)代碼
spring-kafka 是基于 java版的 kafka client與spring的集成,提供了 KafkaTemplate,封裝了各種方法,方便操作,它封裝了apache的kafka-client,不需要再導(dǎo)入client依賴,這篇文章主要介紹了SpringBoot集成Kafka 配置工具類,需要的朋友可以參考下2022-09-09