博为峰JavaEE技术文章 ——MyBatis 缓存(1)

跟现在流行的大多数持久层框架一样,MyBatis同样提供了缓存机制。持久层缓存的目的,为了降低应用层对物理数据源(如:数据库)访问的频次,提高应用程序整体性能。缓存将复制数据物理数据源中的数据(或加工后的数据),程序运行时直接从缓存读写数据,在特定的时刻或事件发生时会同步缓存和物理数据源的数据。

开启mybatis的cache功能很简单,只需要在mappper的xml文件里添加以下节点:

博为峰JavaEE技术文章 ——MyBatis 缓存(1)_第1张图片

这个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。

你可能感兴趣的:(博为峰JavaEE技术文章 ——MyBatis 缓存(1))