av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術(shù)文章
文章詳情頁

java中Hibernate的狀態(tài)總結(jié)

瀏覽:74日期:2022-08-17 16:32:47

在Hibernate框架中對象的存在有不同的狀態(tài),只有理解了這些狀態(tài),才能對Hibernate的工作機(jī)制有所認(rèn)知。主要有四種:瞬時狀態(tài)、持久化狀態(tài)、脫管狀態(tài)和刪除態(tài) 。都比較好理解,大致可以看作是臨時、穩(wěn)定、半穩(wěn)定、回收的幾種形式,下面就Hibernate的這幾種狀態(tài)帶來詳細(xì)的介紹。

1.瞬時狀態(tài)

通過new開辟內(nèi)存空間創(chuàng)建的實體對象,但是它沒有納入hibernate session的管理之中,如果沒有變量對它引用,它將會被JVM(垃圾回收器)回收。瞬時狀態(tài)的對象在內(nèi)存中是孤立的,它與數(shù)據(jù)庫無任何關(guān)聯(lián),僅僅是一個信息攜帶的載體。

一個瞬時狀態(tài)對象被持久化狀態(tài)對象引用,它也會自動變?yōu)槌志没癄顟B(tài)對象。例如調(diào)用session的save、saveorupdate等方法的時候。

特征:

(1)使用 new 創(chuàng)建出來的對象,沒有設(shè)置 id 屬性

(2)沒有被 session 托管,換句話說 對象數(shù)據(jù) 存放在內(nèi)存中, 沒有存放到 session 緩存中

(3)臨時對象數(shù)據(jù) 與 數(shù)據(jù)庫中的數(shù)據(jù) 還沒任何關(guān)聯(lián)

2.持久化狀態(tài)

持久化狀態(tài)對象存在與數(shù)據(jù)庫中的數(shù)據(jù)關(guān)聯(lián),它總是與會話狀態(tài)(Session)和事務(wù)(Transaction)關(guān)聯(lián)在一起。當(dāng)持久化狀態(tài)對象發(fā)生變動時并不會立即執(zhí)行數(shù)據(jù)庫操作,只有當(dāng)事務(wù)結(jié)束時,才會更新數(shù)據(jù)庫,以便保證Hibernate的持久化對象和數(shù)據(jù)庫操作的同步性。

當(dāng)持久化狀態(tài)對象變?yōu)橥泄軤顟B(tài)對象時,它將不在Hibernate持久層的管理范圍之內(nèi)。

特征:

(1)要么是從數(shù)據(jù)庫中使用 get 或 load 方法查詢到的數(shù)據(jù)對象, 要么是 使用save 或 update 方法數(shù)據(jù)轉(zhuǎn)變成持久層對象

(2)對象 數(shù)據(jù)被 session 托管。換句話說 對象數(shù)據(jù) 在 session 緩存中有一份,在數(shù)據(jù)庫中有相應(yīng)的記錄

3.脫管狀態(tài)

當(dāng)持久化對象的Session關(guān)閉之后,這個對象就從持久化狀態(tài)變?yōu)橥泄軤顟B(tài)。托管狀態(tài)的對象仍然在與數(shù)據(jù)庫中的數(shù)據(jù)關(guān)聯(lián),但是他并不在Hibernate的Session管轄范圍之內(nèi)。

如果將脫管狀態(tài)的對象重新關(guān)聯(lián)到某個新的Session上,它將變回持久化狀態(tài)對象。

特征:

(1)主要是通過 持久狀態(tài)對象,調(diào)用 session.evict() 或 session.clear() 或 session.close() 得到的,也可以new 一個設(shè)置 id 值的對象

(2)session 緩存中沒有,內(nèi)存中有的對象(注: 該對象設(shè)置了 id 值)

4.刪除態(tài)

調(diào)用session的delete方法時,對象轉(zhuǎn)為刪除態(tài)。刪除態(tài)只能等待被回收。

知識點擴(kuò)展:

Hibernate的檢索方式

導(dǎo)航對象圖檢索(根據(jù)已經(jīng)加載的對象,導(dǎo)航到其他對象。)

OID檢索(按照對象的OID來檢索對象。) HQL檢索(使用面向?qū)ο蟮腍QL查詢語言。) QBC檢索(使用QBC(Qurey By Criteria)API來檢索對象。 QBC/QBE離線/在線) 本地SQL檢索(使用本地數(shù)據(jù)庫的SQL查詢語句。)

包括Hibernate的檢索方式,Hibernate中對象的狀態(tài),Hibernate的3種檢索策略是什么,分別適用于哪種場合,ORM解決的不匹配問題, Hibernate映射繼承關(guān)系的3種方式,Session的find()方法以及Query接口的區(qū)別等方面問題的總結(jié)

臨時狀態(tài)(transient):剛剛用new語句創(chuàng)建,還沒有被持久化,不處于Session的緩存中。處于臨時狀態(tài)的Java對象被稱為臨時對象。

持久化狀態(tài)(persistent):已經(jīng)被持久化,加入到Session的緩存中。處于持久化狀態(tài)的Java對象被稱為持久化對象。

游離狀態(tài)(detached):已經(jīng)被持久化,但不再處于Session的緩存中。處于游離狀態(tài)的Java對象被稱為游離對象。

Hibernate的3種檢索策略是什么,分別適用于哪種場合

立即檢索

優(yōu)點:對應(yīng)用程序完全透明。

缺點:select語句數(shù)目多。

適用:類級別。

延遲檢索

優(yōu)點:由應(yīng)用程序決定加載哪些對象,可以避免執(zhí)行多余的select語句以及避免加載不需要訪問的對象,節(jié)省內(nèi)存空間,提高檢索效率。

缺點:應(yīng)用程序如果要訪問游離態(tài)的代理類實例,必須保證它在持久化時已經(jīng)被初始化。

適用:一對多或多對多關(guān)聯(lián)。應(yīng)用程序不需要立即訪問或者根本不會訪問的對象。

迫切左外連接檢索

優(yōu)點:對應(yīng)用程序完全透明,不管對象處于持久化狀態(tài)還是游離狀態(tài),應(yīng)用程序都可以方便的從一個對象導(dǎo)航到另一個與它相關(guān)聯(lián)的對象。使用了外連接,select語句數(shù)目少。

缺點:可能會加載程序不許要訪問的對象。復(fù)雜的數(shù)據(jù)庫表連接形象檢索性能。

適用:一對一或多對一關(guān)聯(lián)。應(yīng)用程序需要立即訪問的對象。數(shù)據(jù)庫系統(tǒng)具有良好的表連接性能。

到此這篇關(guān)于java中Hibernate的狀態(tài)總結(jié)的文章就介紹到這了,更多相關(guān)java之Hibernate的狀態(tài)整理內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 午夜国产羞羞视频免费网站 | 在线观看日韩 | 久久91视频| 日韩视频精品在线 | 91xh98hx 在线 国产 | 欧美激情在线精品一区二区三区 | 欧美videosex性极品hd | 一级a性色生活片久久毛片 一级特黄a大片 | 国产精品久久久久久久久久久久久久 | 国产1区2区在线观看 | 成人h动漫亚洲一区二区 | 久久国产成人精品国产成人亚洲 | 国产精品99久久久久久www | 欧美成视频 | 99久久精品国产一区二区三区 | 九九久久精品 | a在线免费观看 | 欧美成人自拍 | 亚洲一区二区不卡在线观看 | 亚洲国产高清在线观看 | 亚洲精品888 | 日韩一| 日韩欧美在线免费观看视频 | 亚洲a视频| 在线国产一区二区 | 亚洲精品久久久一区二区三区 | 91麻豆精品国产91久久久更新资源速度超快 | 久久久久久久亚洲精品 | 国产大片黄色 | 国产成人久久精品一区二区三区 | 一级特黄网站 | 一区二区在线不卡 | 日韩一区二区在线视频 | 成人在线一区二区三区 | 精品乱码一区二区三四区视频 | 久久综合九九 | 亚洲免费一区 | 在线观看h视频 | 国产精品美女久久久久aⅴ国产馆 | 少妇淫片aaaaa毛片叫床爽 | 国产探花在线观看视频 |