Mybatis的缓存机制

devtools/2024/12/23 6:12:30/

目录

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 的专有术语,但可以理解为应用程序缓存与数据库自身的缓存机制。

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


http://www.ppmy.cn/devtools/97614.html

相关文章

勇闯机器学习(第二关-数据集使用)

以下内容,皆为原创,重在无私分享高质量知识,制作实属不易,请点点关注。 好戏开场了~~~(这关涉及到了加载数据集的代码,下一关,教你们安装机器学习库) 一.数据集 这一关的目标 知道数据集被分为训练集和测…

Oracle SQL - 合并重叠的期间

数据和目标 有如下数据存储了各组件的有效期间(此处起止日期用数字代替以便查阅),目标为将有重叠的期间合并到一起。 SQL> SELECT * FROM demo_eff_periods;COMPONENT_ITEM_ID EFFECTIVITY_DATE DISABLE_DATE ----------------- -------…

HCIE冲刺-----------论述解析

X园区 1.防火墙放行OSPF 2.trunk口阻塞vlan1 3.关闭VPN防环 4.ospf不通检查NSSA区域配置 5.重定向可以在三层口或二层口配置 6.vlan60在ospf的相关配置 Z园区 1.mpls不通检查lo0口配置 2.isis不通检查接口IP与lldp连接 3.确认同级RR还是备份RR 4.确认策略矩阵的访问 python 1…

【Nginx】实现 FastCGI

为什么会有 FastCGI ? CGI 协议虽然解决了语言解析器和 Web Server 之间通讯的问题,但是它的效率很低,因为 Web Server每收到一个请求都会创建一个CGI 进程, PHP 解析器都会解析 php.ini 文件,初始化环境&#xff0c…

树莓派安装nodejs

要在树莓派上安装特定版本的 Node.js(v 16.18.0),你可以通过使用 NodeSource 仓库来实现。以下是安装步骤: 首先,通过 SSH 连接到你的树莓派,并更新包列表: sudo apt update安装 Node.js 之前&a…

利用开源项目加速AI+绘画设计与AI+视频生成的商业化进程

随着生成式人工智能技术的发展,越来越多的工具被开发出来,用于辅助创意工作者创作出令人惊叹的作品。本文将介绍两个开源项目——一个专注于将ComfyUI工作流转换为商业化的移动应用和网页,另一个则聚焦于利用AI技术简化视频创作过程。这两个项目不仅为创作者提供了强大的工具…

MySQL:从入门到放弃

基础查询 MySQL:基础查询 Mybatis:基础巩固-DDL 项目实战 MySQL:按照日期分组查询 查询开始时间与结束时间在指定的日期范围之内,并且结束时间可以为NULL的数据

在Python中使用OpenCV录制视频并保存

在Python中使用OpenCV录制视频并保存的基本步骤如下: 使用cv2.VideoCapture(0)来获取默认摄像头。 使用cv2.VideoWriter来创建视频写入对象。 循环读取摄像头的帧,并使用write方法写入视频文件。 当不再需要视频写入对象时,使用release方法…