溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java中Hibernate的狀態有哪些

發布時間:2021-01-25 15:49:48 來源:億速云 閱讀:146 作者:Leah 欄目:開發技術

今天就跟大家聊聊有關java中Hibernate的狀態有哪些,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

1.瞬時狀態

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

一個瞬時狀態對象被持久化狀態對象引用,它也會自動變為持久化狀態對象。例如調用session的save、saveorupdate等方法的時候。

特征:

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

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

(3)臨時對象數據 與 數據庫中的數據 還沒任何關聯

2.持久化狀態

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

當持久化狀態對象變為托管狀態對象時,它將不在Hibernate持久層的管理范圍之內。

特征:

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

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

3.脫管狀態

當持久化對象的Session關閉之后,這個對象就從持久化狀態變為托管狀態。托管狀態的對象仍然在與數據庫中的數據關聯,但是他并不在Hibernate的Session管轄范圍之內。

如果將脫管狀態的對象重新關聯到某個新的Session上,它將變回持久化狀態對象。

特征:

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

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

4.刪除態

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

知識點擴展:

Hibernate的檢索方式

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

  •  OID檢索(按照對象的OID來檢索對象。)

  •  HQL檢索(使用面向對象的HQL查詢語言。)

  •  QBC檢索(使用QBC(Qurey By Criteria)API來檢索對象。 QBC/QBE離線/在線)

  •  本地SQL檢索(使用本地數據庫的SQL查詢語句。)

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

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

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

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

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

立即檢索

優點:對應用程序完全透明。

缺點:select語句數目多。

適用:類級別。

延遲檢索

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

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

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

迫切左外連接檢索

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

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

適用:一對一或多對一關聯。應用程序需要立即訪問的對象。數據庫系統具有良好的表連接性能。

看完上述內容,你們對java中Hibernate的狀態有哪些有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女