Mabatis 一、二级缓存

一、一级缓存

1.核心特征

1-1 缓存级别

一级缓存为SqlSession级别的缓存,默认是开启状态的

1-2作用域

只作用于单个SqlSession

1-3 生命周期

随SqlSession创建而创建,随SqlSession关闭或清空而销毁

1-4存储位置

内存中的HashMap中存储(非序列化)

2. 工作流程

3. 缓存失效场景

3-1 执行写操作 (增,删,改)

3-2 手动清理缓存(调用sqlSession.clearCache())

3-3 查询条件发生变化:

select from table where id = ? ====> select from table where name = ?

3-4 跨SqlSession :不同的SqlSession的缓存是相互隔离的

二、二级缓存

1. 核心特征

1-1 作用域:Mapper级别 (同一个Mapper 的 多个SqlSession共享)

1-2 存储位置:内存/磁盘

1-3 开启条件:需手动开启,在Mapper XML 中添加<cache/>标签

1-4 序列化要求:实体类必须实现Serializable接口

2. 工作流程

3.缓存同步机制:

3-1写入时机:SqlSession提交 或 关闭

3-2失效条件: 1. 执行写操作 2. 手动调用 sqlSession.clearCache()清理缓存

三、使用建议

慎用默认的二级缓存,优先考虑Redis等分布式缓存方案

对写频繁的数据关闭二级缓存

监控缓存命中率,持续优化

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务