1. 程式人生 > >SSH開啟Hibernate二級快取

SSH開啟Hibernate二級快取

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>