Mybatis一级缓存和二级缓存

了解:

  1.       数据库中若执行了单个增删改操作,会自动为其开始事务;若在service层为了某个方法开始了事务管理,(通过Spring的声明式事务管理),则数据库中不再为操作开启事务,因为业务层的事务管理就是数据库中的事务管理。
  2.     持久层访问数据库时,每次访问均需要sqlSession对象,有了该对象才能访问数据库,而sqlSession对象是由mybatis中的sqlSessionFactory来提供的,这里使用了工厂模式,每次访问数据时,都会从该工厂获取一个sqlSession对象

myBatis一级缓存:

             一级缓存是sqlsession级别的缓存,同一个事务共享一个sqlsession对象,在事务中若执行查询操作,会将查询到的数据缓存到以及缓存中,后续若再次查询相同的数据,直接从缓存中获取;

 查询的操作顺序:

             先去一级缓存中查,若有,直接返回,若无,再去数据库中查

注:若事务在查询后执行了update(delete,inster)操作,此时清空一级缓存

一级缓存的意义:

          提高了查询效率;

           (对数据库IO操作ms级别;对内存IO操作ns级别)

 

二级缓存:

是mapper/namespace级别的缓存(默认关闭的)

必须通过设置来开启:

              1.在mybatis的配置文件中添加属性:cachable:true

               2.在想开启二级缓存的mapper的xml文件中添加一组标签(添加为mapper的子标签),

<cache></cache>

<mapper namespace="">
     <cache/>
             </mapper>

二级缓存可以实现跨sqlsession的数据共享,但是若操作该mapper的多个sqlsession中,有一个执行update操作,则立即清空二级缓存

一级二级都存在时,事务中的查询顺序:二级缓存--------.>一级缓存-------------->数据库

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Liamlf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值