Hibernate的對象狀態

 首先回顧一下Hibernate的對象狀態。

     1、瞬時對象(Transient Objects):

     使用new操作符初始化的對象不是立刻持久的。的狀態是瞬時的,也就說沒有和任何數據庫表進行關聯。只要應用不再引用這對象,他的狀態將丟失,並且由垃圾回收機制回收。數據庫中沒有此對象,只是存在內存中。

     2、持久對象(Persist Objects):持久對象是具有數據庫標識的,也就是從數據庫獲取來的。他有持久化管理器Session統一管理,持久實例實在事務中進行操作--當事務結束他的狀態與數據庫同步,可以這樣理解當我們在對象處於Persist 狀態時候我們對對象的改變將會同步道數據庫中,其原理是當事務提交時刻,提供執行SQL的i(DML)nsert 、update、delete語句把內存中的狀態同步到數據庫中。

     3、脫管對象、遊離狀態(Detached Objects):Session關閉之後,持久化對象變成離線對象,離線對象就不能同數據庫同步,也不再受Hibernate管理此時數據庫中還存在這個對象,只是沒有納入Session管理

 

  eclipse 生成DAO代碼與狀態的關係:

  1.saveOrUpdate(Instance) 操作臨時、脫管對象,然後對象變成持久狀態

  2. lock(detachedInstance) 操作乾淨的脫管狀態對象,然後對象變成持久狀態

  3. merge(detachedInstance) 操作脫管狀態對象,然後對象變成持久狀態

  4. attachDirty(instance) 操作不乾淨的臨時、遊離對象

  5. attachClean(detachedInstance)操作髒脫管對象

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