Hibernate 持久化對象的狀態

Hibernate持久化對象支持如下幾個對象狀態:

  • 瞬態:對象有new操作符創建,且尚未與Hibernate Session關聯的對象被認爲處於瞬態。瞬態不會被持久化到數據庫中,也不會被賦予持久化標識。如果程序中失去了瞬態對象的引用,瞬態對象將被垃圾回收機銷燬,使用Hibernate Session可以將其改變爲持久化狀態。

  • 持久化:持久化實例在數據庫中有對應的記錄,並用有一個持久化標識(identifier)。持久化的實例可以是剛剛保存的,也可以是剛剛加載的。無論那一種,持久化對象都必須與指定的Hibernate Session關聯。Hibernate會檢測到處於持久化狀態對象的改動,在當前操作執行完成時將對象數據寫回數據庫。開發者不需要手動執行Update。

  • 脫管:某個實例曾經處於持久化狀態,但隨着與之關聯的Session被關閉,該對象就變成託管狀態。託管對象的引用依然有效,對象可繼續被持續修改。如果重新讓脫管對象與某個Session關聯,這個脫管對象會重新轉換爲持久化狀態,而託管期間的改動也不會丟失,也可被寫入數據庫。正是因爲這個功能邏輯上的長事務成爲可能,它被稱爲應用程序事務。即事務可以跨越用戶的思考,因爲當對象處於脫管狀態時,對象的操作無需鎖定數據庫,不會造成性能下降。

Hibernate <wbr>持久化對象的狀態


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章