Hibernate Session一級快取理解
阿新 • • 發佈:2018-11-10
Hibernate框架中有2級快取:
1.其中一級快取主要為Session快取,透過session查詢到資料庫的內容會被存到session快取中
後續如果訪問就不會從資料庫拿資料,而是直接從session快取中(也就是記憶體)取資料。減少了資料庫訪問次數。
一級快取的生命週期比較短,和session生命週期一致,生命週期比較短暫。
在session介面中包含了一系列JAVA集合,這些集合構成了Session快取,只要Session存在,這些資料也就會存在。
一級快取中持續化的物件被更新後會同步更新到資料庫
2.二級快取為sessionFactory快取,他的生命週期和sessionFactory一致,目前瞭解不多,後續再來補充
另外session有快取區和快照區,當快取區資料發生變化時,快照區和快取區資料會做比較,如果不一致則會把資料持久化到資料庫。
快照機制可以保證資料及時更新(commit或flush等操作時),因此持久化物件擁有自動更新資料庫的能力!
持久化類和持久化物件理解:
持久化類:一個類如果通過配置和資料庫發生對應關係則成為持久化類,即此類進行了對映關係配置
持久化物件分為三個狀態: a 順時狀態 b 持久化狀態 c脫管狀態(即被在session中清除或者session銷燬)
順時狀態即有物件無ID,脫管狀態為有ID但沒有儲存在Session中。我們通常操作持久化狀態。
hibernate主要透過OID(物件識別符號)來識別管理物件.
OID物件識別符號配置通常使用兩種方式:a native(本地策略,可以根據資料庫型別自動選擇自增長方式)
b UUID(當OID為String型別時使用,生成隨機數)