首页 > 其他 > 详细

Mybatis中的缓存简介

时间:2021-01-19 19:23:12      阅读:24      评论:0      收藏:0      [点我收藏+]

01 Mybatis中的缓存简介

缓存的好处:只是查询才有缓存 (增删改没有缓存的),可以增块访问的速度

 sqlsession级缓存 (一级缓存) 默认开启的

所有的操作是公用同一个SQLsession对象并且执行的是同一条SQL语句的时候才会走缓存

02缓存的缺点

        可能存在数据的脏读  

执行修改、删除、添加 默认的把缓存中数据全部清空

03问题

    不同的用户访问的时候创建了不同的sqlsession对象 ,这个时候我们缓存的数据没有办法实现共享

04sqlsession一级缓存

使用SqlSession对象操作数据库资源时,SqlSession对象会先去其缓存区查找是否有现成的符合要求的数据,如果有则返回,没有则按照需求进行数据库操作获取符合要求的资源,并将资源返回给用户的同时在其缓存中缓存,当我们使用同一个SqlSession对象操作同一个Sql资源时,就可以从缓存中直接获取数据库资源数据了

 

技术分享图片

 

 

05 factory的缓存(二级缓存)

 使用的方法:

[1] 在Mybatis.xml中开始二级缓存 <setting name="cacheEnabled" value="true"/>

[2] 在对应的mapper.xml文件中<cache readOnly="true"></cache>

[3]  关闭获得提交指定的sqlsesson对象

注意    当用户查询时,会先在Factory对象自己的缓存中查看是否有现成的数据,有则直接返回,没有则继续查看sqlSession中是否有,有则返回,没有则去数据库中获取资源,将资源返回的同时在SqlSession的缓存中缓存一份儿,当该SqlSession对象被commit或者close时将其缓存的数据刷入到Factory中。

查询数据顺序  二级-->一级--->数据库--->把数据保存到一级,当sqlsession关闭或者提交的时候,把数据刷入到二级缓存中

技术分享图片

 

Mybatis中的缓存简介

原文:https://www.cnblogs.com/vincentmax/p/14297257.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!