Hibernate Session緩存概述
Hibernate還是比較常用的,于是我研究了一下Hibernate Session緩存,在這里拿出來(lái)和大家分享一下,希望對(duì)大家有用。
java對(duì)象的屬性(通常是一些集合類(lèi)型的屬性 )占用的內(nèi)存空間。如果對(duì)象的占用的內(nèi)存很大就稱(chēng)為重量級(jí)的對(duì)象。如果對(duì)象的內(nèi)存小就稱(chēng)為輕量級(jí)的對(duì)象。
Hibernate Session緩存被稱(chēng)為Hibernate的***級(jí)緩存。SessionFactory的外置緩存稱(chēng)為Hibernate的二級(jí)緩存。這兩個(gè)緩存都位于持久層,它們存放的都是數(shù)據(jù)庫(kù)數(shù)據(jù)的拷貝。SessionFactory的內(nèi)置緩存 存放元數(shù)據(jù)和預(yù)定義SQL, SessionFactory的內(nèi)置緩存是只讀緩存。
Hibernate Session緩存的三大作用:
1,減少數(shù)據(jù)庫(kù)的訪(fǎng)問(wèn)頻率,提高訪(fǎng)問(wèn)性能。
2,保證緩存中的對(duì)象與數(shù)據(jù)庫(kù)同步,位于緩存中的對(duì)象稱(chēng)為持久化對(duì)象。
3,當(dāng)持久化對(duì)象之間存在關(guān)聯(lián)時(shí),Session 保證不出現(xiàn)對(duì)象圖的死鎖。
Session 如何判斷持久化對(duì)象的狀態(tài)的改變呢?
Session 加載對(duì)象后會(huì)為對(duì)象值類(lèi)型的屬性復(fù)制一份快照。當(dāng)Session 清理緩存時(shí),比較當(dāng)前對(duì)象和它的快照就可以知道那些屬性發(fā)生了變化。
Session 什么時(shí)候清理緩存?
1,commit() 方法被調(diào)用時(shí)
2,查詢(xún)時(shí)會(huì)清理緩存,保證查詢(xún)結(jié)果能反映對(duì)象的***狀態(tài)。
3,顯示的調(diào)用session 的 flush方法。
session 清理緩存的特例:
當(dāng)對(duì)象使用 native 生成器 時(shí) 會(huì)立刻清理緩存向數(shù)據(jù)庫(kù)中插入記錄。
【編輯推薦】