hibernate中的java對象有幾種狀態,其相互關係如何(區別和相互轉換)

在Hibernate中,對象有三種狀態:臨時狀態、持久狀態和遊離狀態。

下面分別來說說這些狀態:

臨時狀態:當new一個實體對象後,這個對象處於臨時狀態,即這個對象只是一個保存臨時數據的內存區域,如果沒有變量引用這個對象,則會被jre垃圾回收機制回收。這個對象所保存的數據域數據庫沒有任何關係,除非通過Session的save或者saveOrUpdate把臨時對象於數據庫關聯,並把數據插入或者更新到數據庫,這個對 象才轉換爲持久對象。

持久狀態:持久化對象的實例在數據庫中有對應的記錄,並擁有一個持久化表示ID。對持久化對象進行 delete操作後,數據庫中對應的記錄被刪除,那麼持久化對象與數據庫記錄不再存在對應關係,持久化對象變成臨時狀態。持久化對象被修改變更後,不會馬上同步到數據庫,直到數據庫事務提交。在同步之前,持久化對象是髒數據。

遊離狀態:當Session進行了close,clear或者evict後,持久化對象擁有持久化標示符與數據庫對應記錄一致的值,但是因爲回話已經消失,對象不在持久化管理之內,所以處理遊離狀態(託管狀態)遊離狀態的對象與臨時狀態對象是十分相似的,只是它還含有持久化標識。

找了一些資料,我想這個圖可以清楚的說明這三種狀態:

發佈了31 篇原創文章 · 獲贊 16 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章