Mybatis的缓存机制

目录

1. 一级缓存

2. 二级缓存

3. 三级缓存

4.小结


MyBatis 的缓存机制分为一级缓存、二级缓存和三级缓存。

1. 一级缓存

一级缓存是 MyBatis 会话级别的缓存,也称为本地缓存。每个 SqlSession 会维护自己的一级缓存。在同一个 SqlSession 中,如果执行查询操作,对于相同的 SQL 语句,MyBatis 会先在这个会话的一级缓存中查找,如果找到就直接返回,而不再去执行数据库查询。一级缓存的作用范围是 SqlSession 的生命周期。

2. 二级缓存

二级缓存是 MyBatis 全局范围内的缓存,允许多个 SqlSession 共享同一个缓存。二级缓存的配置和使用需要在 MyBatis 的配置文件中进行设置。可以通过配置 `mapper` 中的 `cache` 标签来启用二级缓存。一旦启用,MyBatis 会将查询结果放入二级缓存中,这样不同的 SqlSession 就可以共享这些缓存的查询结果,从而减少对数据库的访问。

3. 三级缓存

实际上,MyBatis 并没有官方文档提到“三级缓存”的概念,通常我们所说的三级缓存是指:

(1)本地的 JVM 缓存:指的是应用程序的内存结构,例如 HashMap 等。

(2)二级缓存:由 MyBatis 提供,允许在 SqlSession 间共享的缓存。

(3)数据库缓存:比如数据库系统自带的查询缓存。

如果看到“三级缓存”,其实通常指的是整合了本地缓存、MyBatis 的二级缓存以及数据库自身的缓存。具体实现通常依赖于应用程序的架构和使用的数据库的特性。

4.小结

(1)一级缓存:(SqlSession 内部)是自动的,不需要额外配置。
(2)二级缓存:(个 SqlSession 之间)相对复杂,需要手动配置。
(3)三级缓存:的概念不属于 MyBatis 的专有术语,但可以理解为应用程序缓存与数据库自身的缓存机制。

在使用缓存时,需要注意数据的一致性和过期策略,以避免缓存击穿和缓存污染等问题。对于频繁更新的数据,可能不适合使用缓存。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值