缓存&Mybatis一级缓存与二级缓存

缓存

为什么使用缓存

缓存(cache)的作用是为了减去数据库的压力,提高查询性能,缓存实现原理是从数据库中查询出来的对象在使用完后不销毁,而是存储在内存(缓存)中,当再次需要获取对象时,直接从内存(缓存)中提取,不再向数据库执行select语句,从而减少了对数据库的查询次数,因此提高了数据库的性能.

数据缓存

让数据离我们的执行程序更近,让程序能快速获取数据

Mybatis缓存

有缓存时查询流程

有缓存,先从缓存中查询,缓存中如果没有,就从数据库查询,查询到后把数据

mybatis一级缓存

开始于sqlsession创建

结束于sqlsession关闭,如果期间执行了新增,删除,修改操作也会清空当前sqlsession对象中缓存数据

调用sqlSession.clearCache();强制清空一级缓存的数据

Mybatis二级缓存

二级缓存时sqlSessionFactory级别,可以让多个sqlsession共享数据

mybatis默认没有开启二级缓存,使用时需要配置开启

如果开启了二级缓存,当sqlsession关闭时,会将一级缓存中的数据存储到二级缓存中

其他的sqlsession就可以从二级缓存中查询到之前sqlsession查询的数据

配置二级缓存配置

第一步:启用二级缓存

在 SqlMapperConfig.xml 中启用二级缓存,如下代码所示,当cacheEnabled 设置为 true 时启用二级缓存,设置为 false 时禁用二级缓存。

第二步:对象序列化

将所有的 POJO 类实现序列化接口 Java.io. Serializable。

第三步:配置映射文件

在 Mapper 映射文件中添加,表示此 mapper 开启二级缓存。

当 SqlSeesion 关闭时,会将数据存入到二级缓存.

Mybatis架构

相关推荐
武帝为此1 分钟前
【Redis 数据库介绍】
数据库·redis·缓存
Tan_Ying_Y10 分钟前
Mybatis的mapper文件中#和$的区别
java·tomcat·mybatis
难以触及的高度11 分钟前
Java for循环完全指南:从基础到高性能实践
java·开发语言
wadesir12 分钟前
用Python实现ggplot2风格绘图(零基础入门Seaborn与Matplotlib美化技巧)
开发语言·python·matplotlib
sheji341619 分钟前
【开题答辩全过程】以 农产品销售系统为例,包含答辩的问题和答案
java·eclipse
油炸自行车26 分钟前
【Qt】Qt Creator Debug模式提示“缺少 Windows CDB 调试器配套的扩展组件“”
开发语言·windows·qt
budingxiaomoli29 分钟前
多线程(三)
java·开发语言
铁锚29 分钟前
Redis中KEYS命令的潜在风险与遍历建议
数据库·redis·缓存
VBA633734 分钟前
VBA之Excel应用第十节:用Union和Intersect方法获得单元格区域
开发语言·自然语言处理
Dream Algorithm44 分钟前
杠杆和合约之间的区别
笔记·区块链