mybatis_二级缓存深入_使用第三方ehcache配置二级缓存
Posted cnsdhzzl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis_二级缓存深入_使用第三方ehcache配置二级缓存相关的知识,希望对你有一定的参考价值。
增删改对二级缓存的影响
1.增删改也会清空二级缓存 2.对于二级缓存的清空实质上是对value清空为null,key依然存在,并非将Entry<k,v>删除 3.从DB中进行select查询的条件是: 1.缓存中根本不存在这个key 2.存在key对应的Entry,但是value为null
二级缓存的配置
<cache eviction="FIFO"
flushInterval="60000"
size="512" readOnly="true"/>
这个更高级的配置创建了一个 FIFO 缓存,并每隔 60 秒刷新,存数结果对象或列表的 512 个引用, 而且返回的对象被认为是只读的
可用的收回策略
LRU – 最近最少使用的:移除最长时间不被使用的对象。 FIFO – 先进先出:按对象进入缓存的顺序来移除它们。 SOFT – 软引用:移除基于垃圾回收器状态和软引用规则的对象。 WEAK – 弱引用:更积极地移除基于垃圾收集器状态和弱引用规则的对象。 默认的是 LRU。 flushInterval(刷新间隔)可以被设置为任意的正整数,而且它们代表一个合理的毫秒 形式的时间段。默认情况是不设置,也就是没有刷新间隔,缓存仅仅调用语句时刷新。 size(引用数目)可以被设置为任意正整数,要记住你缓存的对象数目和你运行环境的 可用内存资源数目。默认值是 1024。 readOnly(只读)属性可以被设置为 true 或 false。只读的缓存会给所有调用者返回 缓 存对象的相同实例。因此这些对象不能被修改。这提供了很重要的性能优势。 可读写的缓存 会返回缓存对象的拷贝(通过序列化) 。这会慢一些,但是安全,因此默认是 false。
开启局部二级缓存:在标签中加入flushCache="true"
<select id="findStudent" resultType="student" flushCache="true"> select * from student </select>
使用第三方ehcache配置二级缓存
1>引入mybatis-ehcache-1.0.3.jar和ehcache-core-2.6.11.jar
2>在src下添加ehcache.xml可以在jar包中找位置如下
3>在Mapper中设置缓存对ehcache的引用
<cache type="org.mybatis.caches.ehcache.EhcacheCache" />
以上是关于mybatis_二级缓存深入_使用第三方ehcache配置二级缓存的主要内容,如果未能解决你的问题,请参考以下文章