mybatis的一级缓存和二级缓存的简单理解

mybatis的一级缓存和二级缓存简单理解

一级缓存存在session(SqlSession)中,在查询的是同一条数据时,sql语句只会执行一次。(相同session(SqlSession),查询同一条数据时,执行一条sql语句)。
如果SqlSession执行了DML操作(增删改),并且提交到数据库,MyBatis则会清空SqlSession中的一级缓存,这样做的目的是为了保证缓存中存储的是最新的信息,避免出现脏读现象。
当一个SqlSession结束后该SqlSession中的一级缓存也就不存在了。
关闭一级缓存后,再次访问,需要再次获取一级缓存,然后才能查找数据,否则会抛出异常。

在这里插入图片描述
在这里插入图片描述
二级缓存存在于SqlSessionFactory中,如果二级缓存存在,同一个员工只会执行一条sql语句。(不同的session,查询同一条数据时,只会执行一次sql语句)缓存对象必须是序列化对象
在这里插入图片描述Mapper.xml(想对应的映射文件)中添加一条缓存标签**
在这里插入图片描述
在对应的实体类上实现序列化接口
在这里插入图片描述
代表创建了一个LRU缓存,并每隔60秒刷新,最大存储512个对象,而且返回的对象被认为是只读的。
evicition收回策略,默认是LRU
(1)LRU最近最少使用策略,一处做长时间不被使用的对象。
(2)FIFO先进先出策略,按对象进入缓存的顺序来移除它们。
(3)SOFT软引用策略,移除基于垃圾回收器状态和软引用规则的对象。
(4)WEAK弱引用策略,更积极地移除基于垃圾收集器状态和弱引用规则的对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值