[MyBatis]-11 缓存机制


prtyaa
prtyaa 2023-12-27 16:22:48 65844
分类专栏: 资讯

MyBatis

包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制。

MyBatis 3 中的缓存实现的很多改进都已经实现了,使得它更加强大而且易于配置。

默认情况下是没有开启缓存的,除了局部的 session 缓存,可以增强变现而且处理循环依赖也是必须的。要开启二级缓存 ,你需要在你的SQL 映射文件中添加一行: cache;

 

Mybatis的一级缓存是session 缓存作用到SqlSession对象,二级缓存是factory 级别缓存,使用时要注意将 实体类实现Serializable 接口。

 

个人理解

一级缓存

默认开启

线程级别的缓存, SqlSession 的缓存

在一个 SqlSession 生命周期中有效. SqlSession 关闭, 缓存清空.

举个例子:

执行一个查询所有的操作,第一次用session对象调用mapper.xml文件中的查询操作的时候,就对数据库进行了查询操作,并且就把查询到的数据存在了缓存中,第二次查询的时候将不再数据库中进行查询,而是从缓存中提取查询结果,值得一提的是,只有执行同一个mapper.xml的一个ID的查询或者是DML才能使用一级缓存

 

二级缓存

默认关闭

进程级别的缓存, SqlSessionFactory 的缓存

在一个SqlSessionFactory生命周期中有效. 可以在多个 SqlSession 生命中期中共享.

默认关闭, 需要使用的时候, 要为某个命名空间开启二级缓存(在 mapper.xml 中配置).

<cache />

通俗的说,也就是只要是同一个SqlSessionFactory产生的SqlSession对象,查询到的所有结果第一次会缓存到内存中,再下一次执行同样操作的时候就会从缓存中提取出来,不再在数据库中查找

还有一个就是如果使用2级缓存的时候,就需要做序列化处理,实现Serializable接口或者是在

cache标签中开启只读

<cache readOnly="true"/>

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=31583
赞同 0
评论 0 条
prtyaaL1
粉丝 1 发表 2554 + 关注 私信
上周热门
银河麒麟添加网络打印机时,出现“client-error-not-possible”错误提示  1487
银河麒麟打印带有图像的文档时出错  1405
银河麒麟添加打印机时,出现“server-error-internal-error”  1194
统信操作系统各版本介绍  1116
统信桌面专业版【如何查询系统安装时间】  1114
统信桌面专业版【全盘安装UOS系统】介绍  1068
麒麟系统也能完整体验微信啦!  1026
统信【启动盘制作工具】使用介绍  672
统信桌面专业版【一个U盘做多个系统启动盘】的方法  616
信刻全自动档案蓝光光盘检测一体机  526
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
我有15积分有什么用? 13
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

添加我为好友,拉您入交流群!

请使用微信扫一扫!