MyBatis 的缓存技术

本文介绍了MyBatis缓存的作用,包括一级缓存在SqlSession中的存储和失效条件,以及二级缓存的启用、配置要求和数据同步时机。
摘要由CSDN通过智能技术生成

缓存: cache 
缓存的作用:通过减少 IO 的方式,来提高程序的执行效摔。
 mybatis 的缓存:将 select 语句的查询结果放到缓存(内存)当中,下一次还是这条 select 语句的话,直接从缓存中取,不再查数据库。一方面是减少了 IO 。另一方面不再执行繁琐的查找算法。效率大大提升。


 mybatis 缓存包括:
.一级缓存:将查询到的数据存储到 SqlSession 中。
.二级缓存:将查询到的数据存储到 SqlSessionFactory 中。
.或者集成其它第三方的缓存:比如 EhCache 【 Java 语言开发的、 Memcache 【 C 语言开发的】等。
(缓存只针对于 DQL 语句,也就是说缓存机制只对应 select 语句。)

1.一级缓存
一级缓存默认是开启的。不需要做任何配置。
原理:只要使用同一个 SqlSession 对象执行同一条 SQL 语句,就会走缓存。

什么时候不走缓存:SqlSession对象不是同一个,查询条件不一样,不走缓存。
什么时候一级缓存失效:第一次 DQL 和第二次 DQL 之间你做了以下两件事中的任意一件,都会让一级缓存清空:1.执行了 sqlSession 的 clearCache ()方法,这是手动清空缓存。2.执行了 INSERT 或 DELETE 或 UPDATE 语句。不管你是操作哪张表的,都会清空一级缓存。

2.二级缓存

二级缓存的范围是 SqlSessionFactory 。
使用二级缓存需要具备以下几个条件:
1.< setting name =" cacheEnabled " value =" true ">全局性地开启或关闭所有映射器配置文件中已配置的任何缓存。(默认就是 true ,无需设置。)
2.在需要使用二级缓存的 SqlMapper . xml 文件中添加配置:< cache />
3.使用二级缓存的实体类对象必须是可序列化的,也就是必须实现 java . io . Serializable 接口
4. SqlSession 对象关闭或提交之后,一级缓存中的数据才会被写入到二级缓存当中。此时二级缓存才可用。
 

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值