Hiberante二級快取
Hibernate的快取:
一級快取:session級快取
二級快取:sessionFactory級快取,用處很大(執行緒級:ehcache)
三級快取:分散式快取(程序級:redis)
快取分類
ehcache使用
1.引入ehcache的相關jar包
ehcache-2.10.3.jar
hibernate-ehcache-5.3.8.Final.jar
slf4j-api-1.7.7.jar
<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd">
<diskStore path="../ehcache/hibernate"/>
<defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="600" timeToLiveSeconds="3600"
overflowToDisk="true" diskSpoolBufferSizeMB="30" maxElementsOnDisk="10000000"
diskPersistent="false" diskExpiryThreadIntervalSeconds="600"/>
<!-- hibernate內建的快取區域 -->
<cache name="org.hibernate.cache.internal.StandardQueryCache" maxElementsInMemory="50" eternal="false" timeToIdleSeconds="3600" timeToLiveSeconds="7200" overflowToDisk="true"/>
<cache name="org.hibernate.cache.internal.UpdateTimestampsCache" maxElementsInMemory="5000" eternal="true" overflowToDisk="true"/>
<!-- 實體物件客製化快取,沒客製化的實體使用預設設定 -->
<cache name="***.Student" maxElementsInMemory="1000" eternal="false" timeToIdleSeconds="600" timeToLiveSeconds="7200" overflowToDisk="true"/>
<cache name="***.Clazz" maxElementsInMemory="1000" eternal="false" timeToIdleSeconds="600" timeToLiveSeconds="7200" overflowToDisk="true"/>
<cache name="***.Clazz.students" maxElementsInMemory="1000" eternal="false" timeToIdleSeconds="600" timeToLiveSeconds="7200" overflowToDisk="true"/>
<!-- 手動使用快取 -->
<cache name="mycache" maxElementsInMemory="1000" eternal="false" timeToIdleSeconds="600" timeToLiveSeconds="7200" overflowToDisk="true"/>
</ehcache>
<property name="cache.use_second_level_cache">true</property>
<property name="cache.use_query_cache">true</property>
<property name="cache.region.factory_class">org.hibernate.cache.ehcache.internal.EhcacheRegionFactory</property>
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
Hibernate的快取會自動同步更新
快取什麼時候失效
快取什麼時候更新