博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MyBatis缓存
阅读量:5224 次
发布时间:2019-06-14

本文共 1128 字,大约阅读时间需要 3 分钟。

-----------------------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

   

   

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

等特点,是 Hibernate 中默认的 CacheProvider

   

   

   

2、Memcached

   

   

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

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

   

   

   

   

   

   

   

   

【made by siwuxie095】

转载于:https://www.cnblogs.com/siwuxie095/p/8372975.html

你可能感兴趣的文章
接收会计事件表和接收会计分录表
查看>>
Prototype源码浅析——Hash部分(一)
查看>>
幼谈苹果新开发语言:Swift和苹果的用心
查看>>
ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛 A题 Visiting Peking University...
查看>>
剑灵-控制技能图及武器升级图
查看>>
Bean自动装配-XML最小化配置
查看>>
rewrap-ajax.js插件
查看>>
Python之Split函数
查看>>
Linux下使用pip安装keras
查看>>
OpenCv-Python 图像处理基本操作
查看>>
博物院与国宝
查看>>
vmware tools 的安装(Read-only file system 的解决)
查看>>
数列求和总结
查看>>
「Unity」委托 将方法作为参数传递
查看>>
Unity学习疑问记录之隐藏与显示物体
查看>>
设计模式-学习
查看>>
button标签点击实现数量加减
查看>>
重置GNOME-TERMINAL
查看>>
quartz 实现调度任务 SchedulerManager
查看>>
new jordans 9 Nets
查看>>