MyBatis实战(一)-缓存机制的设计

摘要:1 数据缓存设计结构1.1 一级缓存Session会话级别的缓存,位于表示一次数据库会话的SqlSession对象之中,又被称之为本地缓存一级缓存是MyBatis内部实现的一个特性,客户不能配置,默认情况下自动支持的缓存,一般客户没有定制它的权利1.2 二级缓存Application应用级别的缓存

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


  • 全部评论(0)
最新发布的资讯信息
【系统环境|windows】Axios 取消重复请求(2020-11-08 07:00)
【系统环境|windows】熬了一晚上,小白用Python写了一个股票提示系统(2020-11-08 07:00)
【系统环境|windows】2020要想成为一名专业的web前台开发程序员,需要学习什么?(2020-11-08 06:35)
【系统环境|windows】前台面试每日 3+1 —— 第546天(2020-11-08 06:34)
【系统环境|windows】聊聊前台工程师的职业发展 (纯干货)(2020-11-08 06:34)
【系统环境|windows】浅谈OAuth 2.0基本原理(2020-11-08 06:34)
【系统环境|windows】程序员初入职场避坑指南(2020-11-08 06:34)
【系统环境|windows】python的绘图利器--海龟绘图turtle(2020-11-08 06:33)
【系统环境|windows】pyinstaller打包结果瘦身(2020-11-08 06:33)
【系统环境|windows】前台面试每日 3+1 —— 第518天(2020-11-08 06:33)
手机二维码手机访问领取大礼包
返回顶部