Session快取和持久化生命週期
阿新 • • 發佈:2019-02-04
主要內容:
Session快取原理
Session快取的應用
持久化物件的生命週期
Session快取原理:
Session快取:在Hibernate中被稱為一級快取。
原理:
- 當應用程式呼叫Session的CRUD方法、以及呼叫查詢介面的list()、iterate()或filter()方法時,如果在Session快取中還不存在相應的物件,Hibernate就會把該物件加入到第一級快取中
- 當清理快取時,Hibernate會根據快取中物件的狀態變化來同步更新資料庫
Session快取的作用。
1.減少訪問資料庫的頻率
2.保證快取中的物件與資料庫中的資料同步
3.當快取中的持久化物件之間存在迴圈關聯關係時,Session會保證不4.出現訪問物件圖的死迴圈,以及由死迴圈引起的JVM堆疊溢位異常
1.當應用程式呼叫Transaction的commit()方法時,commit()方法會清理快取,然後再向資料庫提交事務
2.當應用程式中顯示呼叫session的flush()方法時,通過Session的setFushMode(FlushMode fm)方法來設定清理快取的時間點。
3.FlushMode.ALWAYS
4.FlushMode.AUTO
5.FlushMode.COMMIT
6.FlushMode.MANUAL
持久化物件的生命週期
瞬時(Transient)狀態
持久化(Persistent)狀態
脫管(detached)狀態
移除(removed)狀態