1. 程式人生 > >hibernate框架學習之對象狀態

hibernate框架學習之對象狀態

color 如何 由於 創建 技術分享 不同的 有一個 get ges

Hibernate對象共有三種狀態

瞬時狀態:瞬時對象

持久化狀態:持久化對象

托管狀態:托管對象


瞬時對象(Transient Object),簡稱TO

瞬時對象指的是應用程序創建出來的對象,並且未受到Hibernate控制,一旦Hibernate控制了該對象,具有了OID,對象就不再是瞬時對象


持久化對象(Persistent Object),簡稱PO

持久化對象指的是受Hibernate控制的對象,無論該對象是如何得到的,只要受到Hibernate控制,該對象即為持久化對象。如果Hibernate操作過程中不對該對象進行控制,對象就不再是持久化對象

持久化對象都具有一個Hibernate用於區分對象的標識OID,OID是為Hibernate服務的,用於區分對象


托管對象(Detached Object),簡稱DO

托管對象指的是曾受Hibernate控制,被Hibernate釋放,目前不再受到Hibernate控制的對象。由於Hibernate曾經控制過該對象,因此托管對象也具有Hibernate用於區分對象的標識OID

手工為瞬時對象指定OID也可以將瞬時對象轉化為托管對象


瞬時狀態:瞬時對象

不存在持久化標識OID,不受Hibernate控制(Session關聯)

持久化狀態:持久化對象

存在持久化標識OID,受Hibernate控制(Session關聯)

托管狀態:托管對象

存在持久化標識OID,不受Hibernate控制(Session關聯)

技術分享圖片

技術分享圖片

Hibernate對象狀態切換

Hibernate中對象狀態描述的是同一個對象,在不同階段的形態。對象在不同的操作完成前後,狀態有可能發生改變,狀態的切換並不會創建新的對象。

TO

new創建的對象並且不攜帶OID

PO

save後的對象 update後的對象

saveOrUpdate後的對象 merge後的對象

delete後的對象

load/get等通過查詢方法獲取到的對象

DO

Session關閉後,在此Session操作過程中所有的PO對象

手工清除session中的某個PO

為TO對象指定OID

hibernate框架學習之對象狀態