后端持久化数据层学习笔记
- 为什么要用缓存
SqlSession 对象中创建一个本地缓存,每次查询都将优先从缓存内查找(一级缓存),如果无法找到,则将从数据库中查找。这有助于提高系统效率。 - 缓存原理
SqlSession 创建后,MyBatis 将会为其创建 Executor 对象,缓存信息在 Executor 对象中维护,并向外提供 Cache(一级缓存)及其接口,提供对 Cache 中存储信息的相关操作。
如果用户配置了二级缓存开启(cacheEnabled = true),则会在 SqlSession 创建时添加 装饰器(CachingExecutor),作为优先访问接口(此时访问数据优先次序为 二级缓存 > 一级缓存 > 数据库)。
详细过程如下:
CachingExecutor 作为优先查询对象,首先判断用户需要信息是否存在该对象,如果不在,则调用真正的 Executor(一级缓存)进行查询。如果找到,则将其放入 Cache 中,再返回给用户。