Hibernate的二級快取

2021-07-22 22:42:00 字數 1320 閱讀 4370

是什麼hibernate的一級快取是session級別的快取,這是遠遠不夠的,因此hibernate提供了二級快取機制,它是sessionfactory級別的快取,也就是說當session關閉的時候,下次再查詢相關的資料是會從二級快取讀取的,而不是再次傳送sql請求

怎麼辦預設的情況下,hibernate不會啟動二級快取,需要手動配置

在hibernate.xfg.xml中啟用二級快取

true

1.設定二級快取的**商,在這裡我們使用ehcache

org.hibernate.cache.ehcacheprovider

2.配置類的快取

在hibernate.xfg.xml中定義

usage是定義二級快取的併發策略可取值:

transactional:提供repeatable-read級別的隔離

read-write:提供read-comitted級別的隔離

nostrict-read-write:不鎖定快取中的資料,但是會設定快取資料在很短的時間內過期

read-only:適用於從來不被修改的資料

注意:不同的快取**商所支援的二級快取的併發策略也不同

3配置集合的快取

在hibernate.xfg.xml中

注意:集合快取是依賴於類快取的,也就是說上面的定義必須得在配置檔案中配置order類的快取

4配置ehcache的配置檔案

配置ehcache的預設配置檔案ehcache.xml,放在類的路徑下

二級快取的一些注意事項

1.二級快取會將一級快取的更新進行更新

@test

public void demo3()

2.query的list方法會將查詢的資料儲存在二級快取中,但是不會使用二級快取中的資料

@test

/* * 集合級別的快取

* 集合級別的快取依賴於類級別的快取

* list會將資料放置在二級快取中,但是不會使用裡面的快取

* */

public void demo2()

3.時間戳區域

hibernate提供了時間戳快取區域,用來防止不可重複讀的情況發生

@test

/* * 時間戳區域

* */

public void demo4()

hibernate二級快取

cacheconcurrencystrategy.none cacheconcurrencystrategy.read only 唯讀模式,在此模式下,如果對資料進行更新操作,會有異常 cacheconcurrencystrategy.read write 讀寫模式在更新快取的時候會把快取裡面的資料...

hibernate 二級快取

session快取 一級快取 sql查詢結果快取,由hibernate管理 sessionfactory內建快取,內建快取是hibernate自帶的,用於存放預定義的sql以及hbm.xml描述的元資料,不可解除安裝 sessionfactory外接快取 二級快取 由外部外掛程式提供,外接快取的資料...

Hibernate二級快取

hibernate的session在事務級別進行持久化資料的快取操作。當然,也有可能分別為每個類 或集合 配置集群 或jvm級別 sessionfactory級別 的快取。你甚至可以為之插入乙個集群的快取。注意,快取永遠不知道其他應用程式對持久化倉庫 資料庫 可能進行的修改 即使可以將快取資料設定為...