MyBatis实战(一)-缓存机制的设计
1 数据缓存设计结构
1.1 一级缓存
Session会话级别的缓存,位于表示一次数据库会话的SqlSession对象之中,又被称之为本地缓存
一级缓存是MyBatis内部实现的一个特性,客户不能配置,默认情况下自动支持的缓存,一般客户没有定制它的权利
1.2 二级缓存
Application应用级别的缓存,生命周期长,跟Application的生命周期一样,即作用范围为整个Application应用
缓存架构
2 工作机制
2.1 一级缓存的工作机制
一级缓存是Session会话级别的,一般而言,一个SqlSession对象会使用一个Executor对象来完成会话操作,Executor对象会维护一个Cache缓存,以提高查询性能

2.2 二级缓存的工作机制
如上所言,一个SqlSession对象会使用一个Executor对象来完成会话操作,MyBatis的二级缓存机制的关键就是对这个Executor对象做文章
假如客户配置了cacheEnabled=true,那么在为SqlSession对象创立Executor对象时,会对Executor对象加上一个装饰者 CachingExecutor,这时SqlSession使用CachingExecutor对象来完成操作请求
CachingExecutor对于查询请求,会先判断该查询请求在Application级别的二级缓存中能否有缓存结果
- 假如有查询结果,则直接返回缓存结果
- 假如缓存未命中,再交给真正的Executor对象来完成查询操作,之后CachingExecutor会将真正Executor返回的查询结果放置到缓存中,而后再返回给客户
MyBatis的二级缓存设计得比较灵活,可以使用MyBatis自己定义的二级缓存实现
也可以通过实现org.apache.ibatis.cache.Cache接口自己设置缓存
也可以使用第三方内存缓存库,如Memcached等


说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » MyBatis实战(一)-缓存机制的设计
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » MyBatis实战(一)-缓存机制的设计