1. 程式人生 > >持久化物件狀態和一級快取

持久化物件狀態和一級快取

1.持久化物件的三種狀態

  1. transient 瞬時態(臨時態,自由態):不存在持久化標識OID,尚未與Hibernate Session 關聯物件,被認為處於瞬時態,失去引用將被JVM回收        OID就是物件中與資料庫主鍵對映屬性,例如Customer類 id屬性
  2. persistent 持久態:存在持久化標識OID,與當前session有關聯,並且相關聯的session沒有關閉,並且事務未提交
  3. detached脫管態(離線態,遊離態):存在持久化標識OID,但沒有與當前session關聯,脫離態狀態改變Hibernate不能檢測到

瞬時與持久化狀態區別在於是否在於納入session管理是否有oid

持久和脫管狀態區別在於是否納入session管理

瞬時與脫管狀態是否有OID

 

Hibernate持久化物件的狀態轉換圖

 

1.瞬時狀態切換到其它狀態  ew出來

  • 瞬時--持久    save      saveorUpdate (都是Session)
  • 瞬時--脫管 book.setId (1);為瞬時物件設定OID

2,持久化物件切換到其它狀態    get/load query查詢

  • 持久--瞬時     delete (被刪除持久化物件不建議再次使用)
  • 持久--脫管     evict(清除一級快取中某一個物件),close (關閉Session,清除一級快取) ,.clear (清除一級快取所直物件)

3,脫管狀態切換到其它狀態(無法直接得到)

  • 脫管--瞬時      book. setId (null) ;刪除物件OID
  • 脫管-掛久       update, saveorUpdate, lock (過時)