Hibernate--一級緩存
阿新 • • 發佈:2017-10-09
取出 col 執行 hiberna 不一致 應用程序 span 遊離態 範圍
一級緩存:
Hibernate的一級緩存是指Session(屬於事務範圍的緩存,由Hibernate管理,無需幹預),它是一塊內存空間,用來存放從數據庫查詢出的java對象,有了一級緩存,應用程序可以減少訪問數據庫的次數,提高了性能。
在使用Hibernate查詢對象的時候,首先會使用對象屬性的OID值(對應表中的主鍵)在Hibernate的一級緩存進行查找,如果找到,則取出返回,不會再查詢數據庫,如果沒有找到,再到數據庫中進行查詢操作。然後將查詢結果存放到Session一級緩存中
一級緩存管理:
如果對象不在一級緩存中,數據庫不能自動更新
將對象從session中移除(持久態-->遊離態):
evict()
clear()
快照機制:
當執行commit()時,Hibernate同時會清理session的一級緩存(flush),也就是將堆內存中的數據與快照中的數據進行對比,如果不一致,會執行同步操作(update)操作,如果一致,則不執行update
對象必須是持久化對象,才會走快照機制
快照是數據的副本
快照屬於一級緩存
快照是在堆內存中的
快照的作用:保證數據的一致性
Hibernate--一級緩存