1.瞬時狀態(Transient)
通過new創建對象后,對象并沒有立刻持久化,他并未對數據庫中的數據有任何的關聯,此時java對象的狀態為瞬時狀態,Session對于瞬時狀態的java對象是一無所知的,當對象不再被其他對象引用時,它的所有數據也就丟失了,對象將會被java虛擬機按照垃圾回收機制處理。
? ?2.持久狀態(Persistent)?
當對象與Session管理時,他就處于持久狀態。處于持久狀態的對象擁有數據庫表示(數據庫中的主鍵值)。
? ?3.游離狀態(Detached) ??
處于持久狀態的對象,脫離與其關聯的Sessionn的管理后,對象就處于游離狀態。
三種對象見的轉換
使用new關鍵字構建的對象,該對象的狀態就是瞬時狀態
1.瞬時狀態轉為持久狀態
使用session對象的save()或者seavOrUpdate()方法保存對象后,該對象的狀態由瞬時轉換為持久狀態。
使用Session對象的get()或load()方法獲取對象,該對象的狀態是持久狀態
2.持久狀態轉為瞬時狀態
執行Session對象的delete()方法后,對象由原來的持久狀態變為瞬時狀態,因為此時刻對象沒有與任何的數據庫數據關聯。
3.持久狀態轉為游
執行了Session對象的evict(),clear(),close()方法,對象由原來的持久狀態轉為游離狀態;
4.游離狀態轉為持久狀態
重新獲取Session對象,執行Session對象的update()或saveOrUpdate()方法,對象游離狀態轉為持久狀態,該對象再次與session關聯,
5.游離狀態轉為瞬時狀態
執行Session()對象的delete()方法時,對象由游離狀態轉為瞬時狀態.
處于瞬時狀態或游離狀態的對象不再被其他對象引用時,會被java虛擬機按照垃圾回收機制處理.