📚 分类
spring
🕵🏽‍♀️ 问题描述
mybatis的一级、二级缓存用过吗?
👨‍🏫 问题讲解
✔ 本地缓存: 基于PerpetualCache,本质是一个HashMap
✔ 一级缓存(默认开启): 作用域是session级别
✔ 二级缓存(默认关闭: 作用域是namespace和mapper的作用域,不依赖于session


❒ 一级缓存: 

✔ 基于 PerpetualCache的HashMap 本地缓存,其存储作用域为 Session,当Session进行flush或close之后,该Session中的所有Cache就将清空,默认打开一级缓存

❒ 二级缓存

✔ 对于缓存数据更新机制,当某一个作用域(-一级缓存 Session/二级缓存Namespaces)的进行了新增、修改、删除操作后,默认该作用域下所有 select 中的缓存将被 clear
✔ 二级缓存需要缓存的数据实现Serializable接口
✔ 只有会话提交或者关闭以后,一级缓存中的数据才会转移到二级缓存中
🏳️‍🌈 问题总结
❒ Mybatis的一级、二级缓存用过吗?

✔ 一级缓存: 基于 PerpetualCache 的 HashMap 本地缓存,其存储作用域为 Session,当Session进行flush或close之后,该Session中的所有Cache就将清空,默认打开一级缓存
✔ 二级缓存: 基于namespace和mapper的作用域起作用的,不是依赖于SQLsession,默认也是采用PerpetualCache,HashMap 存储。需要单独开启,一个是核心配置,一个是mapper映射文件

❒ Mybatis的二级缓存什么时候会清理缓存中的数据?

✔ 当某一个作用域(一级缓存 Session/二级缓存Namespaces)的进行了新增、修改、删除操作后,默认该作用域下所有 select 中的缓存将被 clear。
📖 问题信息
📈 浏览次数:6 | 📅 更新时间:2025-12-02 04:34:26
📦 创建信息
🏷️ ID:54 | 📅 创建时间:2024-10-17 22:25:17