Mybatis使用第三方快取框架ehchache
Mybatis提供了很多與其他框架的整合解決方案:https://github.com/mybatis
ehcache快取框架整合的文件地址:http://www.mybatis.org/ehcache-cache/
1.Maven工程配置pom.xml匯入jar包
因為ehcache的依賴slf4j這個日誌的jar包,會和log4j的jar衝突,導致日誌不能顯示了,解決辦法就整合他們,匯入聯合jar包,所以還要一個依賴 slf4j
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.25</version> </dependency> <dependency> <groupId>org.mybatis.caches</groupId> <artifactId>mybatis-ehcache</artifactId> <version>1.1.0</version> </dependency>
2.在sql對映檔案中的mapper標籤下配置開啟ehcace快取
<mapper namespace="cn.jq.mybatis.dao.UserMapper">
<cache type="org.mybatis.caches.ehcache.EhcacheCache"/>
3.寫一個ehcache快取的配置檔案ehcache.xml
<?xml version="1.0" encoding="UTF-8" ?> <ehcache> <diskStore path="d:/ehcache/"/> <defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" maxElementsOnDisk="10000000" diskPersistent="false" diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU" /> </ehcache>
執行例項即可
EHCACHE快取的配置檔案解釋: https://my.oschina.net/u/1450300/blog/525886
1、屬性說明
2.1.diskStore
指定資料儲存位置,可指定磁碟中的資料夾位置。樣例中配置位置為“d:/ehcache/”, 什麼意思呢? 記憶體中的快取滿了,裝不下了,就放這裡,注意:它是臨時的檔案, sessionFactory.close後, 這裡的檔案會自動刪除!
2.2.defaultCache
預設快取配置
2.3.cache
指定物件的快取配置,其中 name 屬性為指定快取的名稱(必須唯一)
2.4.配置屬性中的元素說明
1)maxElementsInMemory(正整數):
在記憶體中快取的最大物件數量
2)maxElementsOnDisk(正整數):
在磁碟上快取的最大物件數量,預設值為0,表示不限制。
3)eternal:
設定快取物件儲存的永久屬性,預設為 false 。當為 true 時 timeToIdleSeconds、timeToLiveSeconds 失效。 表示這個快取永遠不清除!
4)timeToIdleSeconds(單位:秒):
物件空閒時間,指物件在多長時間沒有被訪問就會失效。只對eternal為false的有效。預設值0,表示一直可以訪問。失效時間!
5)timeToLiveSeconds(單位:秒):
物件存活時間,指物件從建立到失效所需要的時間。只對eternal為false的有效。預設值0,表示一直可以訪問。
6)overflowToDisk:
如果記憶體中資料超過記憶體限制,是否要快取到磁碟上。
7)diskPersistent:
是否在磁碟上持久化。指重啟jvm後,資料是否有效。預設為false。
8)diskSpoolBufferSizeMB(單位:MB):
DiskStore使用的磁碟大小,預設值30MB。每個cache使用各自的DiskStore。
9)memoryStoreEvictionPolicy:
如果記憶體中資料超過記憶體限制,向磁碟快取時的策略。預設值LRU,可選FIFO、LFU。
10) diskExpiryThreadIntervalSeconds清理執行緒執行清理的間隔時間。
2、清空策略
1.FIFO(first in first out):
先進先出
2.LFU(Less Frequently Used):
最少被使用,快取的元素有一個hit屬性,hit值最小的將會被清除快取。
3.LRU(Least Recently Used)預設策略:
最近最少使用,快取的元素有一個時間戳,當快取容量滿了,而又需要騰出地方來快取新的元素的時候,那麼現有快取元素中時間戳離當前時間最遠的元素將被清除快取。