hibernate框架學習之對象狀態
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框架學習之對象狀態