MyBatis缓存策略
2024-08-24 07:53:28
MyBatis 提供了一级缓存和二级缓存策略,一级缓存是作用在SqlSession级别上的,而二级缓存则是作用在Mapper级别上的( 即作用在 namespace上),MyBatis 默认是开启的一级缓存,实际缓存的数据是维护在一个HashMap的数据结构中;不同SqlSession中缓存的数据是户部影响的。
一级缓存的生命周期
MyBatis在开启一个Session会话时,会创建一个sqlSession对象,该对象同时会创建一个Executor对象,在Executor对象内部维护了一个PerpetualCache对象,在SqlSession中的所用缓存数据都存在PerpetualCahce对象中。当SqlSession对象关闭后,PerpetualCache数据清空,且不能在使用;当SQLSession对象执行了comit操作,Mybatis为了保证数据的唯一性,将会释放PerpetualCache中的数据,但是该对象以后可用;当SqlSession调用了清空缓存的方法(clearCache()),也将会释放PerpetualCache中的数据,但是该对象以后可用。
手动开启二级缓存的流程
1、创建MyBatis-config.xml
在该配置文件下设置开启二级缓存
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration> <!-- 全局配置参数,需要时在设置-->
<settings>
<setting name="cacheEnabled" value="true"/>
</settings> </configuration>
2、在applicationContext.xml配置文件下指定MyBatis-config.xml的位置,该代码放在SQLSessionFactoryBean这个实体bean的属性下。
<!-- mybatis配置文件的位置 -->
<property name="configLocation" value="classpath:mybatis-config.xml" />
3、在需要开启二级缓存的Mapper.xml中写入如下代码
<cache />
通过以上步骤,MyBatis的二级缓存就可以启用。
最新文章
- AC日记——砍树 codevs 1388
- 1.2 Quartz 2D 内存管理
- lua练手基础
- 《JavaScript高级程序设计》chapter 1: javascript 简介
- 一些Discuz!代码
- (WPF) MVVM: ComboBox Binding, XML 序列化
- [Java] final的意义
- 《Usermod:user lee is currently logged in 家目录不能改变解决方法》
- The Shortest Path in Nya Graph
- VB2012读取xml
- ISO/IEC14443和15693的对比有何具体区别
- nisi 脚本示例
- httping:测量网站延迟
- 《Linux内核分析》第八周学习笔记
- 振兴中华|2013年蓝桥杯A组题解析第三题-fishers
- istio分布式调用链Jaeger
- PHP swoole process的使用
- 如何在SpringMVC中获取request对象
- Lua面向对象 --- 单例
- javascript正则表达式验证密码(必须含数字字符特殊符号,长度4-16位之间)