1. 程式人生 > >Hibernate 3中狀態之間的轉換

Hibernate 3中狀態之間的轉換

Hibernate 3中狀態之間的轉換

在hibernate中 不同的持久化操作會導致物件的狀態的改變
如下圖所示:

使用new關鍵字構建的物件是瞬時狀態的
這裡寫圖片描述

1、瞬時狀態轉換為持久狀態

  1. 使用session物件的save()或saveOrUpdate()方法儲存物件後,該物件的狀態由瞬時狀態轉換為持久狀態
  2. 使用session物件的get()或load()方法獲取物件後,該物件的狀態是持久狀態

2、持久狀態轉換為瞬時狀態

  1. 執行session物件的delete()方法後,物件由原來的持久狀態變為瞬時狀態,因此該物件沒有與任何的資料庫資料有關聯
3、持久狀態變為遊離狀態
  1. 執行了session物件的evict()、clear()、 close() 方法,物件由原來的持久狀態變為遊離態。

4、遊離狀態轉換為持久狀態

  1. 重新獲取session物件,執行session物件的update()或 saveOrUpdate()方法,由遊離狀態轉換為持久狀態,該物件再次與session關聯。
5、遊離狀態轉換為瞬時狀態
  1. 執行session的delete()方法,物件有遊離狀態變為瞬時狀態;
  2. 對瞬時狀態或遊離狀態 的物件不再被其他物件引用時,會被Java虛擬機器按照垃圾回收機制處理