跟现在流行的大多数持久层框架一样,MyBatis同样提供了缓存机制。持久层缓存的目的,为了降低应用层对物理数据源(如:数据库)访问的频次,提高应用程序整体性能。缓存将复制数据物理数据源中的数据(或加工后的数据),程序运行时直接从缓存读写数据,在特定的时刻或事件发生时会同步缓存和物理数据源的数据。
开启mybatis的cache功能很简单,只需要在mappper的xml文件里添加以下节点:
这个cache元素的配置,可以起到以下作用:
1.该Mapper中的所有 select 语句将会被缓存。
2.该Mapper中的所有 insert,update 和 delete 语句会刷新缓存。
3.缓存使用“最近最少使用”的算法来收回。
4.60000毫秒来刷新一次缓存。
5.缓存会存储1024个列表集合或对象的引用。
6.存会给所有调用者返回缓存对象的相同实例,因此这些缓存不能被修改。
小博老师给大家详细介绍下cache元素的几个属性的含义:
Eviction(缓存回收策略),可用的收回策略有:
LRU – 最近最少使用的:移除最长时间不被使用的对象。
FIFO – 先进先出:按对象进入缓存的顺序来移除它们。
SOFT – 软引用:移除基于垃圾回收器状态和软引用规则的对象。
WEAK – 弱引用:更积极地移除基于垃圾收集器状态和弱引用规则的对象。
默认的是LRU。
flushInterval(刷新间隔)可以被设置为任意的正整数,单位是毫秒。默认情况是不设置,不会间隔刷新缓存,仅仅调用语句时刷新。
size(引用数目)可以被设置为任意正整数,缓存的对象数目,默认值是 1024。
readOnly(只读)属性可以被设置为 true 或 false。设置为true意味着该缓存只读。只读缓存会给所有调用者返回缓存对象的相同实例。缓存对象对象不能被修改,性能优势突出。可读写的缓存会返回缓存对象的拷贝(通过序列化) 。性能较低,但是安全性突出,因此默认是 false。