hibernate二級快取的配置

2021-08-30 23:25:01 字數 1277 閱讀 1854

1 一級快取是指session快取,當同乙個session查詢相同資料時,可以直接去快取中拿,但如果是不同session即使查詢內容相同也得去重新查詢資料庫。

2 二級快取是指sessionfactory快取,可以跨越session存在,即使不同的session當查詢相同內容可以直接從二級快取中拿資料而不用去訪問資料庫。二級快取需要借助外界工具。

2.1. [color=red]開啟二級快取的方法是在hibernate.cfg.xml中配置:[/color]

[color=blue]true

org.hibernate.cache.ehcacheprovider[/color]

然後將ehcache的jar包和commons-logging包放入專案中。

2.2. [color=red]然後配置類,如果使用的是annotation的方式,則在@entity下加上[/color]

[color=blue]@cache(usage= cacheconcurrencystrategy.read_write)[/color]

[color=red]如果使用的是配置xml的方式,則在對應的hbm.xml中class下配置 [/color]

[color=blue][/color]

cache的屬性有三個

usage="transactional|read-write|nonstrict-read-write|read-only" region="regionname" include="all|non-lazy"

usage(必選)說明了快取的策略: transactional、 read-write、 nonstrict-read-write或 read-only一般使用的是read-write

region(可選, 預設為類或者集合的名字(class or collection role name))指定第二級快取的區域名(name of the second level cache region)

include(可選,預設為 all)non-lazy 當屬性級延遲抓取開啟2.3. 關於二級快取的使用:load,iterator預設使用二級快取,list預設往二級快取中存資料,但查詢的時候不適用二級快取,如果希望查詢的時候也使用快取則可以使用「查詢快取」 :使用的方法是在hibernate.cfg.xml中加入

true

然後在query物件後加setcacheable(true)如:

listlist1 = (list)session1.createquery("from husband").setcacheable(true).list();

hibernate二級快取

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

hibernate 二級快取

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

Hibernate二級快取

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