MyBatis的一级缓存和二级缓存是怎么样的?
目录
1. 一级缓存
2. 一级缓存失效的几种情况
3. 二级缓存
4.二级缓存失效的情况
5. 二级缓存的相关配置
6. 缓存的查询顺序
MyBatis 的缓存共分为一级缓存和二级缓存。
1. 一级缓存
一级缓存是 SqlSession 级别的,通过同一个 SqlSession 查询到的数据会被缓存,下次查询相同的数据时,会直接从缓存中查询,不会从数据库重复访问。
2. 一级缓存失效的几种情况
(1)不同的 SqlSession 对应不同的缓存;
(2)同一个 SqlSession 查询条件不同;
(3)同一个 SqlSession 两次查询期间执行了任何一次增删改操作;
(4)同一个 SqlSession 两次查询期间手动清空了缓存;
3. 二级缓存
二级缓存是 SqlSessionFactory 级别的通过同一个 SqlSessionFactory 创建的 SqlSession 查询的结果会被缓存起来,此后若再执行相同的查询语句,结果就会从缓存中获取。
一个工厂可以创建多个 SqlSession,因此它所创建的 SqlSession 查询到的数据都被会缓存到二级缓存中。
二级缓存是需要手动开启的,需要以下几个条件
(1)在核心配置文件中,设置全局属性 cacheEnabled = "true",默认为 true,其实也不需要设置;
(2)在映射文件中设置标签<cache/>;
(3)二级缓存必须要SqlSession 关闭或提交之后有效;
(4)查询的数据所转换的实体类类型必须实现序列化的接口;
4.二级缓存失效的情况
二级缓存失效的情况只有一种,就是当两次查询执行了任意增删改在操作之后,会是一级缓存和二级缓存同时失效。
5. 二级缓存的相关配置
刚才我提到了,想要开启二级缓存,需要在 mapper.xml 的映射文件中配置上 <cache/> 这么一个标签,除此之外,我们还可以为此标签配置多个属性,常用的属性有以下几种。
enviction属性:缓存回收策略
LRU(Least Recently Used):最近最少使用的,移除最长时间不被使用的对象;
FIFO(First in First out):先进先出,按对象进入缓存的顺序来移除它们;
SOFT:软引用,移除基于垃圾回收器状态和软引用使用规则的对象;
WEAK:弱引用,更积极地基于垃圾回收器状态和弱引用规则的对象;
默认是LRU。
flushInterval属性:刷新间隔,单位毫秒
默认情况是不设置,也就是没有刷新间隔,缓存仅仅调用语句时刷新。
size属性:引用数目,正整数。
代表缓存最多可以存储多少个对象,太大容易导致内存溢出。
readOnly属性:只读,ture或false
ture:只读缓存,会给所有调用者返回缓存对象的相同实例。因为这些对象不能被修改,者提供了很重要的性能优势。
false:读写缓存,会返回缓存对象的拷贝(通过序列化),这会慢一些,但是安全。
默认也就是false。
6. 缓存的查询顺序
先查询二级缓存,因为二级缓存中可能会有其他程序已经查出来的数据,可以拿来直接使用。
如果二级缓存没有命中,再去查询一级缓存。
如果一级缓存也没有命中,则查询数据库。
SqlSession 关闭之后,一级缓存中的数据会写入到二级缓存中。
相关文章:
MyBatis的一级缓存和二级缓存是怎么样的?
目录 1. 一级缓存 2. 一级缓存失效的几种情况 3. 二级缓存 4.二级缓存失效的情况 5. 二级缓存的相关配置 6. 缓存的查询顺序 MyBatis 的缓存共分为一级缓存和二级缓存。 1. 一级缓存 一级缓存是 SqlSession 级别的,通过同一个 SqlSession 查询到的数据会被缓…...
下载的文件被Windows 11 安全中心自动删除
今天从CSDN上下载了自己曾经上传的文件,但是浏览器下载完之后文件被Windows安全中心自动删除,说是带病毒。实际是没有病毒的,再说了即便有病毒也不应该直接删除啊,至少给用户一个保留或删除的选项。 研究了一番,可以暂…...
【Java List与数组】List<T>数组和数组List<T>的区别(124)
List数组:存储List的数组,即:数组中的元素是:List; 数组List:存储数组的List,即:List中的数据是类型的数组; 测试案例: import java.util.ArrayList; impor…...
Nuxt 菜鸟入门学习笔记四:静态资源
文章目录 public 目录assets 目录全局样式导入 Nuxt 官网地址: https://nuxt.com/ Nuxt 使用以下两个目录来处理 CSS、fonts 和图片等静态资源: public 目录 public 目录用作静态资产的公共服务器,可通过应用程序定义的 URL 公开获取。 换…...
C语言 - 结构体、结构体数组、结构体指针和结构体嵌套
结构体的意义 问题:学籍管理需要每个学生的下列数据:学号、姓名、性别、年龄、分数,请用 C 语言程序存储并处理一组学生的学籍。 单个学生学籍的数据结构: 学号(num): int 型姓名(…...
python安装playwright问题记录
python安装playwright这个时候,有得时候会https timeout 有的时候会 not found。 我最后使用的方法三,挺好用的。 PyPI The Python Package Index 可以尝试使用的方法 1. 更换pip源:使用国内的pip源可以提高下载速度并减少超时问题。例如,…...
关于gRPC微服务利弊之谈
gRPC微服务架构包括以下几个主要组件: 服务定义:定义服务的接口和消息格式,使用Protocol Buffers或其他的消息格式进行描述。服务实现:实现定义的服务接口和消息处理逻辑。服务器端实现:在服务器端,需要实…...
【Terraform学习】使用 Terraform创建Lambda函数启动EC2(Terraform-AWS最佳实战学习)
本站以分享各种运维经验和运维所需要的技能为主 《python》:python零基础入门学习 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8》暂未更新 《docker学习》暂未更新 《ceph学习》ceph日常问题解…...
Mac软件删除方法?如何删除不会有残留
Mac电脑如果有太多无用的应用程序,很有可能会拖垮Mac系统的运行速度。因此,卸载电脑中无用的软件是优化Mac系统运行速度的最佳方式之一。Mac卸载应用程序的方式是和Windows有很大的区别,特别对于Mac新用户来说,如何无残留的卸载删…...
编程之道:【性能优化】提高软件效率的实际建议和避免常见陷阱
在今天的数字化世界中,软件性能是应用程序成功的关键之一。无论是网页加载速度、移动应用的响应时间还是后端服务器的处理速度,性能都直接影响着用户满意度。在追求高性能时,开发人员需要采取一系列实际建议,同时避免常见的陷阱。…...
VGG的结构:视觉几何组(Visual Geometry Group)
目录 1. VGG 的结构 2. VGG 的网络细节 3. VGG 的代码实现 1. VGG 的结构 牛津大学的视觉几何组(Visual Geometry Group)设计了 VGGNet(也称为 VGG),一种经典的卷积神经网络 (CNN) 架构。在 2014 年 ILSVRC 分类任务中,VGG 取…...
VBA:按照Excel工作表中的名称列自动汇总多个工作薄中对应sheet中所需要的数据
需求如下: B列为产品名为合并单元格,C列为供应商名,G、H列为金额数据;数据源放在同一个文件夹内,B列产品名来源于工作薄名称中间的字符串,C列供应商名来源于工作薄中的sheet名;G、H列金额数据来…...
Mybatis1.9 批量删除
1.9 批量删除 1.9.1 编写接口方法1.9.2 编写SQL语句1.9.3 编写测试方法 如上图所示,用户可以选择多条数据,然后点击上面的 删除 按钮,就会删除数据库中对应的多行数据。 1.9.1 编写接口方法 在 BrandMapper 接口中定义删除多行数据的方法。…...
CUDA小白 - NPP(2) -图像处理-算数和逻辑操作(2)
cuda小白 原始API链接 NPP GPU架构近些年也有不少的变化,具体的可以参考别的博主的介绍,都比较详细。还有一些cuda中的专有名词的含义,可以参考《详解CUDA的Context、Stream、Warp、SM、SP、Kernel、Block、Grid》 常见的NppStatus…...
python+redis实现布隆过滤器(含redis5.0版本以上和5.0以下版本的两份代码)
布隆过滤器是一种空间效率极高的概率数据结构,用于测试一个元素是否是集合的成员。如果布隆过滤器返回 False,则元素绝对不在集合中。如果返回 True,则元素可能在集合中,但也可能是一个误报。布隆过滤器利用了多个不同的哈希函数对…...
SpringBoot Thymeleaf iText7 生成 PDF(2023/08/29)
SpringBoot Thymeleaf iText7 生成 PDF(2023/08/29) 文章目录 SpringBoot Thymeleaf iText7 生成 PDF(2023/08/29)1. 前言2. 技术思路3. 实现过程4. 测试 1. 前言 近期在项目种遇到了实时生成复杂 PDF 的需求,经过一番…...
【核磁共振成像】并行采集MRI
目录 一、并行成像二、SENSE重建三、SMASH重建四、灵敏度校准五、AUTO-SMASH和VD-AUTO-SMASH六、GRAPPA重建七、SPACE RIP重建算法八、PILS重建算法九、PRUNO重建算法十、UNFOLD算法 一、并行成像 并行MR成像(pMRI):相位阵列接受线圈不但各有自己专用的接受通道,而且…...
深度图相关评测网站
文章目录 1 单目/Stereo相关测评网站介绍12 单目/Stereo相关测评网站介绍23 单目/Stereo相关测评网站介绍3 1 单目/Stereo相关测评网站介绍1 https://vision.middlebury.edu/stereo/eval3/ 2 单目/Stereo相关测评网站介绍2 http://www.cvlibs.net/datasets/kitti/eval_stereo…...
本地部署 CodeLlama 并在 VSCode 中使用 CodeLlama
本地部署 CodeLlama 并在 VSCode 中使用 CodeLlama 1. CodeLlama 是什么2. CodeLlama Github 地址3. 下载 CodeLlama 模型4. 部署 CodeLlama5. 在 VSCode 中使用 CodeLlama6. 使用WSGI启动服务7. 创建 start.sh 启动脚本 1. CodeLlama 是什么 Code Llama 是一个基于 Llama 2 的…...
Agilent33220A任意波形发生器
20MHz正弦波和方波脉冲、斜披、三角波,噪声和直流波形14-bit,50MSa/s,64K点任意波形AM、FM、PM、FSK和PWM凋制线性和对数扫描及脉冲串模式10mVpp至10Vpp幅苗范围图形化界面可以对信号设置进行可视化验证通过USB、GPIB和LAN连接 性能优异的各种函数的波形…...
观察使用token plan套餐后月度api成本的可控性变化
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 观察使用token plan套餐后月度api成本的可控性变化 对于个人开发者或小型项目而言,大模型API的调用成本常常是预算中一…...
Java WebSocket六种集成方案详解:从JSR 356到Spring生态实战
1. 项目概述最近在折腾一个基于 Spring Cloud 的 WebSocket 集群方案时,我不得不把 Java 生态里那些五花八门的 WebSocket 集成方式都翻了个底朝天。不研究不知道,一个看似简单的 WebSocket,在 Java 世界里竟然有这么多“门派”,从…...
APK Installer终极指南:在Windows上轻松安装Android应用的完整解决方案
APK Installer终极指南:在Windows上轻松安装Android应用的完整解决方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经想在Windows电脑上运行An…...
Stateflow实战:构建LKA系统状态机的模块化建模与数据管理
1. 从零理解LKA系统与Stateflow建模 第一次接触车道保持辅助系统(LKA)时,我盯着那个能在高速上自动修正方向的方向盘看了半天。这玩意儿到底怎么判断什么时候该介入?后来才知道,核心就是藏在控制器里的状态机逻辑。Sta…...
5分钟快速上手APK Installer:Windows电脑安装Android应用的终极指南
5分钟快速上手APK Installer:Windows电脑安装Android应用的终极指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 想在Windows电脑上直接运行Android应用…...
大模型应用开发指南:从入门到实践,收藏这份从Demo到生产落地的完整攻略
本文分享了AI应用开发中从Demo到生产落地的完整实践,涵盖技术选型、架构设计、核心算法优化及部署经验。通过LangGraph、RAGFlow和Langfuse等工具,解决上下文超限、Prompt管理混乱等问题,最终实现准确率提升25%的工业级AI系统。适合程序员和小…...
3分钟彻底解决Cursor试用限制:设备标识重置技术深度解析
3分钟彻底解决Cursor试用限制:设备标识重置技术深度解析 【免费下载链接】go-cursor-help 解决Cursor在免费订阅期间出现以下提示的问题: Your request has been blocked as our system has detected suspicious activity / Youve reached your trial request limit…...
CANN Ascend C矩阵乘法特殊配置
GetSpecialMDLConfig 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gi…...
HCV Core Protein (59-68);RGRRQPIPKA
一、基础信息多肽名称:丙型肝炎病毒 核心蛋白片段 (59-68) 英文名称:HCV Core Protein (59-68) 三字母序列:Arg-Gly-Arg-Arg-Gln-Pro-Ile-Pro-Lys-Ala 单字母序列:RGRRQPIPKA 氨基酸数量:10 aa 结构特征:线…...
别再只用默认配置了!GaussDB密码安全策略的这8个参数,DBA必须知道怎么调
GaussDB密码安全策略深度实战:8个关键参数配置指南 在数据库安全管理中,密码策略往往是最容易被忽视却又最常被攻击利用的薄弱环节。许多DBA习惯性地沿用数据库默认配置,殊不知这些默认值可能无法满足企业实际安全需求。GaussDB作为企业级分布…...
