由 Mybatis 源码畅谈软件设计(八):从根上理解 Mybatis 二级缓存

💡 原文中文,约15900字,阅读约需38分钟。
📝

内容提要

二级缓存基于Mapper级别,支持多个SqlSession共享。通过配置cache标签启用,readOnly属性默认为false,表示缓存对象为深拷贝。二级缓存在事务提交后生效,以避免脏数据问题。增删改操作会使缓存失效,旨在提高数据库访问效率。

🎯

关键要点

  • 二级缓存基于Mapper级别,支持多个SqlSession共享。
  • 通过配置cache标签启用,readOnly属性默认为false,表示缓存对象为深拷贝。
  • 二级缓存在事务提交后生效,以避免脏数据问题。
  • 增删改操作会使缓存失效,旨在提高数据库访问效率。
  • 二级缓存的序列化机制与一级缓存不同,避免了对对象引用的直接修改。
  • 二级缓存的实现类默认是PerpetualCache,缓存回收策略为LRU。
  • 二级缓存的创建和管理涉及多个类和装饰器模式。
  • 事务提交时,二级缓存才会被保存,未提交的事务不会影响缓存。
  • 二级缓存的设计目的是为了提高数据库访问效率,特别是在读多写少的场景。
  • 二级缓存的引入需要更复杂的缓存失效策略和数据一致性管理。
➡️

继续阅读