博爲峯Java技術文章 ——JavaEE Hibernate實例狀態

博爲峯小博老師數據庫

Hibernate的實例狀態分爲3種,分別爲瞬時狀態(Transient)、持久化狀態(Persistent)和脫管狀態(Detached)。code

瞬時狀態(Transient)對象

實體對象是經過Java中的new關鍵字開闢內存空間建立的Java對象,可是它並無歸入Hibernate Session的管理中,若是沒有變量對它引用,它將被Java垃圾回收器回收。瞬時狀態的對象在內存中是孤立存在的,它與數據庫中的數據無任何關聯,僅是一個信息攜帶的載體。blog

假如一個瞬時狀態對象被持久化狀態對象引用,它也會自動變爲持久化狀態對象。事務

持久化狀態(Persistent)ip

持久化狀態對象存在與數據庫中的數據關聯,它老是與會話狀態(Session)和事務(Transaction)關聯在一塊兒。當持久化狀態對象發生改動時並不會當即執行數據庫操做,只有當事務結束時,纔會更新數據庫,以便保證Hibernate的持久化對象和數據庫操做的同步性。當持久化狀態對象變爲脫管狀態對象時,它將不在Hibernate持久層的管理範圍以內。內存

脫管狀態(Detached)get

當持久化狀態的對象的Session關閉以後,這個對象就從持久化狀態的對象變爲脫管狀態的對象。脫管狀態的對象仍然存在與數據庫中的數據關聯,只是它並不在Hibernate的Session管理範圍以內。若是將脫管狀態的對象從新關聯某個新的Session上,它將變回持久化狀態對象。同步

相關文章
相關標籤/搜索