01_MyBatis EHCache整合及所需jar包,ehcache.xml配置檔案引數配置及mapper中的引數配置

toto1297488504發表於2015-01-19


1 mybatis整合時需要的jar

ehcache-core-2.6.5.jar

mybatis-ehcache-1.0.2.jar

Mybatis、日誌、EHCache所需要的jar包如下:

2 EHCachemybatis整合

EHCache是一種廣泛使用java分散式快取通用快取,JavaEE中的一個輕量級的容器。

EHCache整合是基於ehcache-core,沒有任何其它第三方應用程式。

想使用EHCache到她們的應用程式的使用者,必須下載EHCachezip bundle,解壓它新增這些jarsclasspath路徑下。使用Apache Maven的使用者只需要在pom.xml檔案中新增如下內容:

<dependencies>
  ...
  <dependency>
    <groupId>org.mybatis.caches</groupId>
    <artifactId>mybatis-ehcache</artifactId>
    <version>1.0.2</version>
  </dependency>
  ...
</dependencies>

接著需要在mapperxml檔案中配置如下內容:

<mapper namespace="org.acme.FooMapper">

<cache type="org.mybatis.caches.ehcache.EhcacheCache"/>...

</mapper>

你也可以提供可以再執行動態變更的如下引數:

<mapper namespace="org.acme.FooMapper">

    <cache type="org.mybatis.caches.ehcache.EhcacheCache"/>

    <property name="timeToIdleSeconds" value="3600"/><!--1hour-->

    <property name="timeToLiveSeconds" value="3600"/><!--1hour-->

    <property name="maxEntriesLocalHeap" value="1000"/>

    <property name="maxEntriesLocalDisk" value="10000000"/>

    <property name="memoryStoreEvictionPolicy" value="LRU"/>

  </cache>

  ...

</mapper>

如果使用者需要日誌快取操作,可以插入Cachelogging version:

<mapper namespace="org.acme.FooMapper">

  <cache type="org.mybatis.caches.ehcache.LoggingEhcache"/>

  ...

</mapper>

    需要通xml配置檔案配置EHCache的使用者,必須要在classpath路徑下放置/ehcache.xml資源。

/ehcache.xml資源沒有發現或者在載入/ehcache.xml的時候發生錯誤,將會使用預設的配置。

3 /ehcache.xml配置檔案引數配置

<?xml version="1.0" encoding="UTF-8"?>

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   xsi:noNamespaceSchemaLocation="ehcache.xsd"

   updateCheck="true" monitoring="autodetect" dynamicConfig="true">

 

   <diskStore path="java.io.tmpdir" />

  

   <!-- 

    nameCache的唯一標識

    maxElementsInMemory:記憶體中最大快取物件數

    maxElementsOnDisk:磁碟中最大快取物件數,若是0表示無窮大

    eternalElement是否永久有效,一但設定了,timeout將不起作用

    overflowToDisk:配置此屬性,當記憶體中Element數量達到maxElementsInMemory時,Ehcache將會Element寫到磁碟中

    timeToIdleSeconds:設定Element在失效前的允許閒置時間。僅當element不是永久有效時使用,可選屬性,預設值是0,也就是可閒置時間無窮大

    timeToLiveSeconds:設定Element在失效前允許存活時間。最大時間介於建立時間

        和失效時間之間。僅當element不是永久有效時使用,預設是0.,也就是element存活時間無窮大 

    diskPersistent:是否快取虛擬機器重啟期資料 

    diskExpiryThreadIntervalSeconds:磁碟失效執行緒執行時間間隔,預設是120

    diskSpoolBufferSizeMB:這個引數設定DiskStore(磁碟快取)的快取區大小。預設是30MB。每個Cache都應該有自己的一個緩衝區

    memoryStoreEvictionPolicy:當達到maxElementsInMemory限制時,Ehcache將會根據指定的策略去清理記憶體。預設策略是LRU(最近最少使用)。你可以設定為FIFO(先進先出)或是LFU(較少使用) 

    -->

   <defaultCache maxElementsInMemory="10000"

      eternal="false"

      timeToIdleSeconds="120"

      timeToLiveSeconds="120"

      overflowToDisk="true"

      maxElementsOnDisk="10000000"

      diskPersistent="false"

      diskExpiryThreadIntervalSeconds="120"

      memoryStoreEvictionPolicy="LRU" />

</ehcache>

sqlMapConfig.xml中的<settings>設定如下:

<!-- 開啟延遲載入 -->

<settings>

   <!-- 全域性的延遲載入的開關必須要開啟 -->

   <setting name="lazyLoadingEnabled" value="true"/>

   <!-- 積極載入設定成false -->

   <setting name="aggressiveLazyLoading" value="false"/>

   <!-- 開啟二級快取, 快取中只要是需要配置的針對的都是二級快取 -->

   <setting name="cacheEnabled" value="true"/>

</settings>

    mapper檔案中的內容如下:

相關文章