时间:2021-05-19
一个项目中肯定会存在很多共用的查询数据,对于这一部分的数据,没必要
每一个用户访问时都去查询数据库,因此配置二级缓存将是非常必要的。
Mybatis的二级缓存配置相当容易,要开启二级缓存,只需要在你的Mapper
映射文件中添加一行:
<cache />
它将采用默认的行为进行缓存:
映射文件中所有的select语句将被缓存
映射文件中所有的insert、update和delete语句将刷新缓存
缓存将使用LRU(Least Recently Used)最近最少使用策略算法来回收
刷新间隔(no Flush Interval,没有刷新间隔),缓存不会以任何时间顺序来刷新
缓存会存储列表集合和对象(无论查询方法返回什么)的1024个引用
缓存会被视为read/write(可读/可写)的缓存,意味着对象检索不是- 共享的,而且可以安全的被调用者修改,而不干扰其他调用者或者线程所做的潜在修改
所有这些属性都可以通过缓存元素的属性来修改,比如:
<!--1小时缓存--> <cache eviction="LRU" flushInterval="3600000" size="512" readOnly="true"/>这个更高级的配置创建了一个FIFO缓存,并每隔3个小时刷新缓存,储存结
果对象或列表的512个引用,而且返回的对象被认为是只读的,因此在不同线程中的调用者之间修改他们会导致冲突。
可用的收回策略有:
【默认】LRU——最近最少使用的:移除最长时间不被使用的对象
FIFO——先进先出的:按对象进入缓存的顺序来移除他们
SOFT——软引用:移除基于垃圾回收器状态和软引用规则的对象
WEAK——弱引用:更积极地移除基于垃圾收集器状态和弱引用规则的对象。
flushInterval(刷新间隔)可以被设置为任意的正整数(60*60*1000这种形式是不允许的),而且它们代表一个合理的毫秒形式的时间段。默认情况是不设置,也就是没有刷新间隔,缓存仅仅调用语句时刷新。
size(引用数目)可以被设置为任意正整数,要记住你缓存的对象数目和你运行环境的可用内存资源数目。默认值是1024.
readOnly(只读)属性可以被设置为true或false。只读的缓存会给所有调用者返回缓存对象的相同实例,因此这些对象不能被修改,这提供了很重要的性能优势。可读写的缓存会返回缓存对象的拷贝(通过发序列化)。这会慢一些,但是安全,因此默认是false。
配置完表示该mapper映射文件中,所有的select语句都将被缓存,所有的insert、update和delete语句都将刷新缓存。但是实际中,我们并是希望这样,有些select不想被缓存时,可以添加select的属性useCache=“false”;有些insert、update和delete不想让他刷新缓存时,添加属性flushCache=”false ”。
以上所述是小编给大家介绍的Mybatis的二级缓存配置,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
二级缓存需要手动的配置和开启,具体如下在总的配置件中设置开启二级缓存/Mybatis02/config/mybatis-conf.xml光开这个还没用,还需要在
JSP开发之hibernate配置二级缓存的方法hibernate二级缓存也称为进程级的缓存或SessionFactory级的缓存。二级缓存是全局缓存,它可以被
介绍使用mybatis时可以使用二级缓存提高查询速度,进而改善用户体验。使用redis做mybatis的二级缓存可是内存可控,管理方便。1.在pom.xml文件
前言什么是mybatis二级缓存?二级缓存是多个sqlsession共享的,其作用域是mapper的同一个namespace。即,在不同的sqlsession中
一、MyBatis缓存介绍 正如大多数持久层框架一样,MyBatis同样提供了一级缓存和二级缓存的支持1.一级缓存:基于PerpetualCache的Hash