MyBatis缓存

-----------------------siwuxie095

  

  

  

  

  

  

  

  

MyBatis 一级缓存

  

  

1、一级缓存:基于 PerpetualCache 的 HashMap 存储,

其作用域为 session,也被称为局部缓存

  

「一级缓存是 SqlSession 级别的」

  

  

  

2、一级缓存当执行相同的select 语句时,MyBatis 不

执行 sql 语句,而是从缓存区命中,并返回结果

  

  

  

3、原理:MyBatis 执行 select 语句时,首先去缓存区命中,

如果命中,则直接返回结果,如果没有命中,则执行 sql 语

句,从数据库中查询

  

  

  

4、一级缓存默认开启,且无法关闭

  

  

  

5、使用SqlSession 的 clearCache() 方法可以强制查询不缓存

  

  

  

6、在执行insert、update、delete 语句时,会刷新缓存

  

  

  

  

  

MyBatis 二级缓存

  

  

1、二级缓存:默认也是基于 PerpetualCache 的 HashMap 存储,

其作用域为 namespace,也被称为全局缓存

  

「二级缓存是 SqlSessionFactory 级别的」

  

  

  

2、二级缓存同一个 namespace 中的 select 语句可以从缓存区

命中。二级缓存是可以跨session 的,且在 session 提交 或 关闭之

后才会生效

  

  

  

3、开启二级缓存:在映射配置文件中加一个标签<cache/>即可

  

  

  

4、开启二级缓存后:

  

1)映射配置文件中所有select 语句将会被缓存

  

2)映射配置文件中所有insert、update、delete 语句会刷新缓存

  

  

注意:在MyBatis 核心配置文件中,二级缓存的全局开关cacheEnabled

默认已开启,如果要禁用二级缓存,可以将cacheEnabled 设为 false

  

  

  

  

5、标签 <cache/> 有若干属性如下:

  

  

上面的配置创建了一个 FIFO 缓存,并每隔 60 秒刷新,存数结果对象

或列表的 512 个引用,而且返回的对象被认为是只读的,因此在不同

线程中的调用者之间修改它们会导致冲突

  

  

  

  

  

使用第三方缓存来实现二级缓存

  

  

1、Ehcache

  

http://www.mybatis.org/ehcache-cache/

  

简介:EhCache 是一个纯 Java 的进程内缓存框架,具有快速精干

等特点,是Hibernate 中默认的 CacheProvider

  

  

  

2、Memcached

  

http://www.mybatis.org/memcached-cache/

  

简介:Memcached 是一个高性能的分布式缓存框架,它基于内存

key-value 存储,用来存储小块的任意数据

  

  

  

  

  

  

  

  

【made by siwuxie095】

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值