mybatis配置ehcache缓存

1:在spring配置文件中加载缓存配置文件
  <!-- 使用ehcache缓存 -->    
   <bean id="ehCacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">  
     <property name="configLocation" value="classpath:ehcache.xml" />  
   </bean>


2:ehcache.xml
<?xml version="1.0" encoding="UTF-8"?>  
<ehcache>
  <!-- 
    maxElementsInMemory:缓存中最大允许创建的对象数
    maxInMemory:设定内存中创建对象的最大值。
    eternal:设置元素(译注:内存中对象)是否永久驻留。如果是,将忽略超时限制且元素永不消亡。
    timeToIdleSeconds:设置某个元素消亡前的停顿时间。
    timeToLiveSeconds:为元素设置消亡前的生存时间. 
    overflowToDisk:设置当内存中缓存达到 maxInMemory 限制时元素是否可写到磁盘上。
    memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。默认策略是LRU(最近最少使用)。你可以设置为FIFO(先进先出)或是LFU(较少使用)。
    diskPersistent:重启时内存不持久化到硬盘。
   -->
  <diskStore path="java.io.tmpdir"/>
    <defaultCache maxElementsInMemory="10000" memoryStoreEvictionPolicy="LRU" eternal="false"
    timeToIdleSeconds="300" timeToLiveSeconds="300" overflowToDisk="false" diskPersistent="false" />

    <cache name="districtDataCache"
       maxElementsInMemory="4000"
       eternal="true"
       overflowToDisk="false"
       diskPersistent="false"
       memoryStoreEvictionPolicy="LRU"/>    
</ehcache>

上面的diskStor path 你可以指定某一个路径下,java.io.tmpdir 指的是你系统的缓存目录。

3:mapper.xml

然后在对应的mapper.xml里面加上

<cache readOnly="true" type="org.mybatis.caches.ehcache.LoggingEhcache">
  <property name="timeToIdleSeconds" value="3600"/><!--1 hour-->  
    <property name="timeToLiveSeconds" value="3600"/><!--1 hour-->  
    <property name="maxEntriesLocalHeap" value="1000"/>  
    <property name="maxEntriesLocalDisk" value="10000000"/>  
    <property name="memoryStoreEvictionPolicy" value="LRU"/>  
  </cache>
(1)property参数配置不加也可以,都会有一个默认值,大家也可以查查一共有哪些配置,然后根据自己的需要来配置
         然后这个配置是会带上cache执行的日志,如果不要带日志可以把LogginEhcache改成EhcacheCache。(需要进入 mybatis-ehcache-1.0.0.jar )
(2)如果readOnly为false,此时要结果集对象必须是可序列化的。需要将实体对象implements Serializable

4:useCache开关
在mapper.xml这样设置了默认是全部操作都会执行缓存策略,如果有某些sql不需要执行,可以把useCache设置为false。

<select id="selectUser" resultMap="BaseResultMap" parameterType="XX.XX.XX.XX.User" useCache="false" >



小结:
其实mybatis缓存不是最好的选择:
a、面对一定规模的数据量,内置的cache方式就派不上用场了;
b、对查询结果集做缓存并不是MyBatis框架擅长的,它专心做的应该是sql mapper。采用此框架的Application去构建缓存更合理,比如采用OSCache、Memcached啥的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值