mybatis的一级缓存和二级缓存

一级缓存

默认是一级缓存,使用 hashmap 存储数据,存储的是查询操作,其作用域是一个 session 会话。

hashmap 的 key是:hashCode+查询的 SqlId+编写的 sql 查询语句+参数,value是查询后得到的数据。

所以当查询中的参数改变 或 两次查询之间有任何一次增删改操作 或 手动清除了缓存,一级缓存都会失效。

二级缓存

需要手动开启,在配置文件中将cacheEnabled属性改成true就算是开启了;是一个全局性的作用域;需要使用二级缓存的实体类需要实现Serializable接口。

二级缓存相关的属性

1 、eviction=“FIFO”:缓存回收策略:

LRU – 最近最少使用的:移除最长时间不被使用的对象。

FIFO – 先进先出:按对象进入缓存的顺序来移除它们。

SOFT – 软引用:移除基于垃圾回收器状态和软引用规则的对象。

WEAK – 弱引用:更积极地移除基于垃圾收集器状态和弱引用规则的对象。

默认的是 LRU。

2 、flushInterval:刷新间隔,单位毫秒

默认情况是不设置,也就是没有刷新间隔,缓存仅仅调用语句时刷新

3 、size:引用数目,正整数

代表缓存最多可以存储多少个对象,太大容易导致内存溢出

4 、readOnly:只读,true/false

你可能感兴趣的:(Mybatis,经验分享,java)