【Mybatis】(四)一级缓存和二级缓存

本文深入解析了一级缓存和二级缓存的概念,一级缓存针对SqlSession,二级缓存针对SqlSessionFactory,阐述了它们的生命周期、工作原理及在MyBatis中的应用策略。

什么叫缓存

将数据存放在程序内存中,用于减轻数据查询的压力,提升读取数据的速度,提高性能。

一级缓存

■ 两个级别

  • SqlSession级别的缓存,实现在同一个会话中数据的共享

  • Statement级别的缓存,可以理解为缓存只对当前执行的这一个Statement有效,执行完后就会清空缓存

■ 一级缓存的生命周期和SqlSession一致

■ 设置为SqlSession级别的缓存,当执行insert/update/delete操作或close之后,缓存清空

■ MyBatis的一级缓存最大范围是SqlSession内部,有多个SqlSession或者分布式的环境下,数据库写操作会引起脏数据,建议设定缓存级别为Statement

二级缓存

■ SqlSessionFactory级别的缓存,实现不同会话中数据的共享,是一个全局变量

■ 存储作用域为Mapper的namespace级别

■ 可自定义存储源,如 EHCache(分布式缓存框架)

■ 当开启缓存后,数据的查询执行的流程就是二级缓存-> 一级缓存 -> 数据库

■ 不同于一级缓存,二级缓存可设置是否允许刷新和刷新频率

■ MyBatis的二级缓存不适应用于映射文件中存在多表查询的情况,如果多个映射文件对应的Sql操作都使用的是同一块缓存,那么缓存的粒度就变粗了,多个Mappernamespace下的所有操作都会对缓存使用造成影响。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值