SSH開啟Hibernate二級快取
阿新 • • 發佈:2018-12-16
1、新增ehcache依賴:
<!-- Hibernate二級快取依賴 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>${hibernate.version}</version>
</dependency>
2、配置Spring.xml:
<!-- 開啟二級快取 --> <prop key="hibernate.cache.use_second_level_cache">true</prop> <!-- 二級快取實現類 --> <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</prop> <!-- 啟用查詢快取 --> <prop key="hibernate.cache.use_query_cache">true</prop> <!-- 載入快取所需配置檔案 --> <prop key="hibernate.net.sf.ehcache.configurationResourceName">classpath:ehcache.xml</prop> ------------------------------------------------------------------------------------------- <!-- 配置hibernateTemplate --> <bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate"> <property name="sessionFactory" ref="sessionFactory"></property> <!-- 使用查詢快取(使用二級快取需要需要在hibernateTemplate新增此property) --> <property name="cacheQueries" value="true"/> </bean>
3、建立ehcache.xml:
<?xml version="1.0" encoding="UTF-8" ?> <ehcache> <diskStore path="D:\cache"/> <defaultCache maxElementsInMemory="1000" eternal="false" overflowToDisk="true" timeToIdleSeconds="120" timeToLiveSeconds="180" diskPersistent="false" diskExpiryThreadIntervalSeconds="60"/> </ehcache> <!--diskStore:指定快取的物件存放在硬碟上的哪個路徑底下。 defaultCache:定義快取的預設行為,即為預設的快取策略。 maxElementsInMemory:在快取中預設存放的元素(物件)個數,即記憶體中最大允許存在的物件數量。 eternal:設定快取中的物件是否永遠不過期,true代表永遠不過期,一直存在,false代表要過期了。 overflowToDisk:當快取物件達到記憶體中最大允許存在的數量時,是否把溢位的物件存放到硬碟上。 timeToIdleSeconds:指定快取物件空閒多長時間就過期,過期的物件會被清除掉。 timeToLiveSeconds:指定快取物件總的存活時間,超過這個值就會被清除掉。 diskPersistent:當你的快取應用關閉的時候,是否需要把快取的物件持久化到硬碟上,即當JVM結束時是否持久化物件。 diskExpiryThreadIntervalSeconds:指定專門用於清除過期物件的監聽執行緒的輪詢時間,也就是說後面有一個執行緒,它會不斷掃描,掃描是否有物件過期,有物件過期,就會將其清除掉。-->
4、配置hbm.xml:
<class name="com.wulianfa.model.User" table="t_user"> <!-- 註明需要使用二級快取的實體類 usage :快取策略 region :指定快取區域名(實體類全稱) --> <cache usage="read-write" region="com.wulianfa.model.User" /> <!-- id --> <id name="userId" column="ID"> <generator class="native"></generator> </id> <!-- 使用者 --> <property name="userName" column="NAME"></property> <!-- 密碼 --> <property name="userPassword" column="PASSWORD"></property> </class>