最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2021年01月25日 14:23:05   作者:小妮淺淺  
在本篇內容里小編給大家整理的是一篇關于java中Hibernate的狀態(tài)總結內容,有興趣的朋友們可以學習下。

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

1.瞬時狀態(tài)

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

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

特征:

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

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

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

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

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

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

特征:

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

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

3.脫管狀態(tài)

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

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

特征:

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

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

4.刪除態(tài)

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

知識點擴展:

Hibernate的檢索方式

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

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

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

臨時狀態(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)點:對應用程序完全透明。

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

適用:類級別。

延遲檢索

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

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

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

迫切左外連接檢索

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

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

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

到此這篇關于java中Hibernate的狀態(tài)總結的文章就介紹到這了,更多相關java之Hibernate的狀態(tài)整理內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Spring框架基于注解的AOP之各種通知的使用與環(huán)繞通知實現(xiàn)詳解

    Spring框架基于注解的AOP之各種通知的使用與環(huán)繞通知實現(xiàn)詳解

    這篇文章主要介紹了Spring框架基于注解的AOP之各種通知的使用及其環(huán)繞通知,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2022-11-11
  • 使用IDEA創(chuàng)建Servlet程序的詳細步驟

    使用IDEA創(chuàng)建Servlet程序的詳細步驟

    在學習servlet過程中,參考的教程是用eclipse完成的,而我在練習的過程中是使用IDEA的,在創(chuàng)建servlet程序時遇到了挺多困難,在此記錄一下如何用IDEA完整創(chuàng)建一個servlet程序,感興趣的朋友一起看看吧
    2024-08-08
  • 一篇文章帶你深入了解Java封裝

    一篇文章帶你深入了解Java封裝

    Java中的封裝是將數(shù)據(jù)(變量)和作用于數(shù)據(jù)(方法)的代碼作為一個單元包裝在一起的機制。 在封裝中,類的變量將從其他類隱藏,并且只能通過當前類的方法訪問
    2021-08-08
  • SpringBoot項目中通過@Value給參數(shù)賦值失敗的解決方案

    SpringBoot項目中通過@Value給參數(shù)賦值失敗的解決方案

    springboot項目中通過@Value給屬性附值失敗,給參數(shù)賦值失敗,打印為空值,文中通過代碼示例給大家介紹的非常詳細,對大家解決問題有一定的幫助,需要的朋友可以參考下
    2024-04-04
  • springboot之如何同時連接多個redis

    springboot之如何同時連接多個redis

    這篇文章主要介紹了springboot之如何同時連接多個redis問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Java volatile關鍵字特性講解上篇

    Java volatile關鍵字特性講解上篇

    JMM要求保證可見性、原子性、有序性,volatile可以保證其中的兩個,本篇文章具體驗證volatile的可見性,不原子性和禁重排,同時解決volatile的不保證原子性,讓代碼具有原子性
    2022-12-12
  • springboot前后臺數(shù)據(jù)交互的示例代碼

    springboot前后臺數(shù)據(jù)交互的示例代碼

    這篇文章主要介紹了springboot前后臺數(shù)據(jù)交互的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • java如何消除太多的if else判斷示例代碼

    java如何消除太多的if else判斷示例代碼

    這篇文章主要介紹了java如何消除太多的if else判斷,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • 解決Eclipse發(fā)布到Tomcat丟失依賴jar包的問題

    解決Eclipse發(fā)布到Tomcat丟失依賴jar包的問題

    這篇文章介紹了如何在Eclipse中配置部署裝配功能,以確保在將Web項目發(fā)布到Tomcat服務器時不會丟失任何依賴jar包,通過手動配置或使用構建工具腳本,可以自動化這個過程,提高開發(fā)效率和應用程序的穩(wěn)定性,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • SpringData JPA中@OneToMany和@ManyToOne的用法詳解

    SpringData JPA中@OneToMany和@ManyToOne的用法詳解

    這篇文章主要介紹了SpringData JPA中@OneToMany和@ManyToOne的用法詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10

最新評論

铅山县| 九龙坡区| 屯门区| 澳门| 会理县| 广德县| 湖州市| 宁乡县| 赤峰市| 平原县| 九龙县| 慈溪市| 宁强县| 莲花县| 砚山县| 宜丰县| 清原| 汉寿县| 晋中市| 射洪县| 临武县| 凤山市| 长岭县| 堆龙德庆县| 郧西县| 同江市| 安丘市| 江华| 新平| 平阴县| 鄱阳县| 全椒县| 福建省| 泰来县| 洛隆县| 湄潭县| 岗巴县| 大新县| 漯河市| 鄂托克前旗| 合作市|