亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

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


點擊查看更多內容
6人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
JAVA開發工程師
手記
粉絲
1.4萬
獲贊與收藏
1479

關注作者,訂閱最新文章

閱讀免費教程

感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消