Mybatis的缓存

Mybatis缓存

正如,大多数持久层框架一样
MyBatis 同样提供了一级缓存和二级缓存的支持

一级缓存

基于 PerpetualCache 的 HashMap 本地缓存,其存储作用域为 Session
当 Sessionflush 或 close 之后,该 Session 中的所有 Cache 就将清空。

二级缓存

与一级缓存其机制相同,默认也是采用 PerpetualCache, HashMap 存储
不同在于其存储作用域为 Mapper(Namespace),并且可自定义存储源
比如,Ehcache。

更新机制

对于缓存数据更新机制,当某一个作用域(一级缓存 Session/二级缓存 Namespaces)的进行了C/U/D 操作后
默认该作用域下所有 select 中的缓存将被 clear

注意事项

1、映射语句文件中的所有 select 语句将会被缓存

2、映射语句文件中的所有 insert, update 和 delete 语句会刷新缓存

3、缓存会使用 Least Recently Used——LRU,最近最少使用算法来收回

4、根据时间表,缓存不会以任何时间顺序来刷新
比如,no Flush Interval,没有刷新间隔

5、缓存会存储列表集合或对象的 1024 个引用
无论查询方法返回什么

6、缓存会被视为是 read/write——可读/可写的缓存
意味着对象检索不是共享的,而且可以安全地被调用者修改
而不干扰其他调用者或线程所做的潜在修改

配置参数

<cache
eviction="FIFO" //回收策略为先进先出
flushInterval="60000" //自动刷新时间 60s
size="512" //最多缓存 512 个引用对象
readOnly="true"/> //只读
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值