5. Hibernate的對象狀態是什麼?並做詳細說明


hibernate面試題 --- Hibernate的對象狀態是什麼?並做詳細說明
 
Hibernate的對象狀態是什麼?並做詳細說明
   Hibernate的對象狀態其實就是session中持久化類的實例的對象狀態,瞭解了持久化類的狀態,纔可以正確的運用session中的方法。
   Hibernate的對象狀態爲瞬時狀態、持久狀態、脫管狀態
(1)瞬時狀態
       該實例是剛用new語句創建的,還沒有被持久化,不處於任何session的緩存中,它沒有對象標識符值。如果沒有變量對該對象進行引用,它將被java虛擬機回收。

特點:不跟任何一個Session實例關聯,在數據庫中沒有任何對應的記錄
(2)持久狀態
   已經被持久化,加入到session緩存中,實例目前與某一個session有關聯,它擁有對象標識符值,並且可能在數據庫中有一個對應的行,Hibernate保證在同一個session實例的

緩存中,數據庫中的每一條記錄只對應唯一的持久化對象
特點:持久化對象總是被一個session實例關聯,持久化實例和數據庫的相關記錄對應,session清理緩存時,會根據持久化實例的屬性數據變化,同步更新數據庫,總結一句話就

是:和session實例關聯,在數據庫中有對應的記錄
(3)脫管狀態
   已經被持久化過,但已經不處於session緩存中,實例曾經與某一個session上下文發生過關聯,不過與某持久對象關聯的session被關閉了,它擁有對象表示符值,並且在數據庫

中可能存在一個對應的行
   特點:
1.不再位於session緩存中,即它不再和session關聯
2.本質上與瞬時對象相同,在沒有任何變量引用它時,JVM會在適當的時候將它回收;

3.比瞬時對象多了一個數據庫記錄標識值

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章