由 Mybatis 源码畅谈软件设计(八):从根上理解 Mybatis 二级缓存
💡
原文中文,约15900字,阅读约需38分钟。
📝
内容提要
二级缓存基于Mapper级别,支持多个SqlSession共享。通过配置cache标签启用,readOnly属性默认为false,表示缓存对象为深拷贝。二级缓存在事务提交后生效,以避免脏数据问题。增删改操作会使缓存失效,旨在提高数据库访问效率。
🎯
关键要点
- 二级缓存基于Mapper级别,支持多个SqlSession共享。
- 通过配置cache标签启用,readOnly属性默认为false,表示缓存对象为深拷贝。
- 二级缓存在事务提交后生效,以避免脏数据问题。
- 增删改操作会使缓存失效,旨在提高数据库访问效率。
- 二级缓存的序列化机制与一级缓存不同,避免了对对象引用的直接修改。
- 二级缓存的实现类默认是PerpetualCache,缓存回收策略为LRU。
- 二级缓存的创建和管理涉及多个类和装饰器模式。
- 事务提交时,二级缓存才会被保存,未提交的事务不会影响缓存。
- 二级缓存的设计目的是为了提高数据库访问效率,特别是在读多写少的场景。
- 二级缓存的引入需要更复杂的缓存失效策略和数据一致性管理。
➡️