前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MyBatis实战(一)-缓存机制的设计1 数据缓存设计结构2 工作机制

MyBatis实战(一)-缓存机制的设计1 数据缓存设计结构2 工作机制

作者头像
JavaEdge
发布2018-10-10 10:36:24
4190
发布2018-10-10 10:36:24
举报
文章被收录于专栏:JavaEdgeJavaEdge

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.10.06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 数据缓存设计结构
    • 1.1 一级缓存
      • 1.2 二级缓存
      • 2 工作机制
        • 2.1 一级缓存的工作机制
          • 2.2 二级缓存的工作机制
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档