1. 程式人生 > >Hibernate Session一級快取理解

Hibernate Session一級快取理解

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型別時使用,生成隨機數)