欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

1.瞬時(shí)狀態(tài)

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

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

特征:

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

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

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

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

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

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

特征:

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

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

3.脫管狀態(tài)

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

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

特征:

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

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

4.刪除態(tài)

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

知識(shí)點(diǎn)擴(kuò)展:

Hibernate的檢索方式

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

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

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

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

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

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

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

立即檢索

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

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

適用:類級(jí)別。

延遲檢索

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

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

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

迫切左外連接檢索

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

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

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

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

相關(guān)文章

  • Java中JS引擎實(shí)現(xiàn)的一句話木馬

    Java中JS引擎實(shí)現(xiàn)的一句話木馬

    這篇文章主要為大家介紹了如何利用Java中JS引擎實(shí)現(xiàn)的一句話木馬,有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進(jìn)步
    2022-02-02
  • java使用jar包生成二維碼的示例代碼

    java使用jar包生成二維碼的示例代碼

    這篇文章主要介紹了java使用jar包生成二維碼的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 為什么Java是程序員受歡迎的語言這幾個(gè)原因你該清楚

    為什么Java是程序員受歡迎的語言這幾個(gè)原因你該清楚

    Java一直穩(wěn)居程序員很受歡迎的編程語言的榜首,是企業(yè)中使用最廣泛的編程語言。這篇文章主要介紹了為什么Java是程序員受歡迎的語言這幾個(gè)原因你該清楚,需要的朋友可以參考下
    2020-07-07
  • java實(shí)現(xiàn)斗地主發(fā)牌功能

    java實(shí)現(xiàn)斗地主發(fā)牌功能

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)斗地主發(fā)牌功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • SpringBoot整合Spring Data Elasticsearch的過程詳解

    SpringBoot整合Spring Data Elasticsearch的過程詳解

    這篇文章主要介紹了SpringBoot整合Spring Data Elasticsearch的過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • mybatisplus實(shí)現(xiàn)自動(dòng)填充時(shí)間的項(xiàng)目實(shí)踐

    mybatisplus實(shí)現(xiàn)自動(dòng)填充時(shí)間的項(xiàng)目實(shí)踐

    在數(shù)據(jù)庫操作中,頻繁設(shè)置創(chuàng)建時(shí)間和更新時(shí)間字段非常繁瑣,通過使用MyBatis-Plus的自動(dòng)填充功能,可以簡(jiǎn)化操作,本文就來詳細(xì)的介紹一下,感興趣的可以了解一下
    2024-10-10
  • 基于SpringBoot+Redis的Session共享與單點(diǎn)登錄詳解

    基于SpringBoot+Redis的Session共享與單點(diǎn)登錄詳解

    這篇文章主要介紹了基于SpringBoot+Redis的Session共享與單點(diǎn)登錄,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Mybatis批量刪除多表

    Mybatis批量刪除多表

    MyBatis的作用我想不用多說,今天說說MyBatis中的批量刪除操作。 需要的朋友一起看看吧
    2017-10-10
  • 解讀thymeleaf模板引擎中th:if的使用

    解讀thymeleaf模板引擎中th:if的使用

    這篇文章主要介紹了解讀thymeleaf模板引擎中th:if的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 深入淺出MappedByteBuffer(推薦)

    深入淺出MappedByteBuffer(推薦)

    MappedByteBuffer使用虛擬內(nèi)存,因此分配(map)的內(nèi)存大小不受JVM的-Xmx參數(shù)限制,但是也是有大小限制的,這篇文章主要介紹了MappedByteBuffer的基本知識(shí),需要的朋友可以參考下
    2022-12-12

最新評(píng)論