Java_Mybatis_缓存

2023-12-16

缓存

1.概述

  • Mybatis 缓存:MyBatis 内置了一个强大的事务性查询缓存机制,它可以非常方便地配置和定制

2.会话缓存(一级缓存)

  • sqlSession 级别的,也就是说,使用同一个 sqlSession 查询同一 sql 时,直接从缓存数据中取,不需要操作数据库

  • 失效情况

    • 同一个 sqlSession 条件不同
    • 同一个 sqlSession 执行期间执行了增加、删除、修改操作
    • 手动清缓存

3.二级缓存

  • 使用之前必须在mapper.xml 文件中添加

  • 二级缓存:是 sqlSessionFactory 级别的,只要使用同一个 sqlSessionFactory 创建的 sqlSession 查询同一 sql 都可以使用缓存

  • 使用前注意:

    • 先再 mapper.xml 中手动开启二级缓存
      在这里插入图片描述
  • 失效情况

    • 必须给类实现序列化接口(其实原理就是把对象信息写进一个序列化文件中,通过对象流)
    • 两次查询之间添加了任何的增删改操作
    • insert、update 和 delete 语句会刷新缓存
  • 二级缓存清除策略

    • LRU – (Least Recently Used)最近最少使用:移除最长时间不被使用的对象。 默认使用方式
    • FIFO – 先进先出:按对象进入缓存的顺序来移除它们。
    • SOFT – 软引用:基于垃圾回收器状态和软引用规则移除对象。
    • WEAK – 弱引用:更积极地基于垃圾收集器状态和弱引用规则移除对象。
<cache
  eviction="FIFO"
  flushInterval="60000"
  size="512"
  readOnly="true"/>
  • flushInterval:刷新间隔,单位毫秒
  • size:引用数目,默认是1024
  • readOnly:只读操作默认是 false
    • true,会给调用的地方返回相同实例,对象不能修改
    • false:可以修改,返回实例的拷贝

4.缓存查询顺序

  • 先查二级缓存,范围比较大,可能有其它会话缓存的信息
  • 再查一级缓存
  • 再查数据库
  • 如果sqlSession关闭会把一级缓存信息缓存到二级缓存
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java_Mybatis_缓存 的相关文章

  • 从 java sdk 向对等方发送提案时出现访问被拒绝错误

    我正在尝试使用以下代码查询区块链并收到访问被拒绝错误 我也遇到同样的错误sendTransactionProposal方法也是如此 UserContext adminUserContext RegisterEnrollUser regist
  • 存根方法时出现 InvalidUseOfMatchersException

    我有这个 TestNG 测试方法代码 InjectMocks private FilmeService filmeService new FilmeServiceImpl Mock private FilmeDAO filmeDao Bef
  • JDK 文档是语言规范的一部分吗?

    只有一名官员Java语言规范 https docs oracle com javase specs jls se8 html index html所有 Java 实现都必须遵守它 API文档怎么样 所有Java实现都需要遵守吗这个版本 ht
  • createImage(int width, int height) 的问题

    我有以下代码 作为游戏的一部分每 10 毫秒运行一次 private void gameRender if dbImage null createImage returns null if GraphicsEnvironment isHea
  • “java.net.MalformedURLException:未找到协议”读取到 html 文件

    我收到一个错误 java net MalformedURLException Protocol not found 我想读取网络上的 HTML 文件 mainfest uses permission android name android
  • 打印星号的 ASCII 菱形

    我的程序打印出这样的钻石 但只有当参数或菱形的每一面为4 例如如果我输入6 底部三角形的间距是错误的 我一直在试图找出答案 当参数改变时 底部的三角形不会改变 只有顶部的三角形会改变 它只适用于输入4 public static void
  • GWT - 如何组织项目以拥有多个网页以及它们之间的导航

    我是 GET 的新手 顺便说一句 它给我留下了深刻的印象 并且发现它对于像我这样熟悉 C NET 桌面技术并愿意编写 Web 应用程序的人来说非常有吸引力 我根据 GWT Eclipse 向导生成的示例启动了自己的项目 该项目生成带有面板的
  • 当客户端关闭连接时,Spring StreamingResponseBody 请求线程未清理

    我在控制器中有一个端点 它返回一个StreamingResponseBody 用于向客户端发送文件 其代码大致如下 RestController RequestMapping value api public class Controlle
  • 什么时候可以在 Java 中使用 Thead.stop() ?

    Thread stop 的 Java 文档听起来好像如果您调用 Thread stop 世界就会终结 已弃用 这种方法本质上是不安全的 停止线程 Thread stop 导致它解锁所有已锁定的监视器 作为未经检查的 ThreadDeath
  • Spring Security SAML2 使用 G Suite 作为 Idp

    我正在尝试使用 Spring Security 5 3 3 RELEASE 来处理 Spring Boot 应用程序中的 SAML2 身份验证 Spring Boot 应用程序将成为 SP G Suite 将成为 IDP 在我的 Maven
  • 需要使用 joda 进行灵活的日期时间转换

    我想使用 joda 解析电子邮件中的日期时间字符串 不幸的是我得到了各种不同的格式 例如 Wed 19 Jan 2011 12 52 31 0600 Wed 19 Jan 2011 10 15 34 0800 PST Wed 19 Jan
  • 自动生成Flyway的迁移SQL

    当通过 Java 代码添加新模型 字段等时 JPA Hibernate 的自动模式生成是否可以生成新的 Flyway 迁移 捕获自动生成的 SQL 并将其直接保存到新的 Flyway 迁移中 以供审查 编辑 提交到项目存储库 这将很有用 预
  • Java:如何为山区时间创建 TimeZone 对象?

    必须不禁用夏令时 嗯 在这个清单 http en wikipedia org wiki List of tz database time zones在 zoneinfo 时区名称中 有很多声称是 山地时间 找到最适合您想要的那个 然后使用它
  • 使用 Mockito 模拟某些方法,但不模拟其他方法

    有没有办法使用 Mockito 模拟类中的某些方法 而不模拟其他方法 例如 在这个 诚然是人为的 Stock我想嘲笑的班级getPrice and getQuantity 返回值 如下面的测试片段所示 但我想要getValue 执行乘法 如
  • 在 SWT/JFace RCP 应用程序中填充巨大的表

    您将如何在 SWT 表中显示大量行 巨大是指超过 20K 行 20 列的东西 不要问我为什么需要展示那么多数据 这不是重点 关键是如何让它尽可能快地工作 这样最终用户就不会厌倦等待 每行显示某个对象的实例 列是其属性 一些 我想使用 JFa
  • Hamcrest Matchers - 断言列表类型

    问题 我目前正在尝试使用 Hamcrest Matchers 来断言返回的列表类型是特定类型 例如 假设我的服务调用返回以下列表 List
  • 如何重新启动死线程? [复制]

    这个问题在这里已经有答案了 有哪些不同的可能性可以带来死线程回到可运行状态 如果您查看线程生命周期图像 就会发现一旦线程终止 您就无法返回到新位置 So 没有办法将死线程恢复到可运行状态 相反 您应该创建一个新的 Thread 实例
  • 洪水填充优化:尝试使用队列

    我正在尝试创建一种填充方法 该方法采用用户指定的初始坐标 检查字符 然后根据需要更改它 这样做之后 它会检查相邻的方块并重复该过程 经过一番研究 我遇到了洪水填充算法并尝试了该算法 它可以工作 但无法满足我对 250 x 250 个字符的数
  • 在java中使用多个bufferedImage

    我正在 java 小程序中制作游戏 并且正在尝试优化我的代码以减少闪烁 我已经实现了双缓冲 因此我尝试使用另一个 BufferedImage 来存储不改变的游戏背景元素的图片 这是我的代码的相关部分 public class QuizApp
  • Spring表单ModelAttribute字段验证避免400 Bad Request错误

    我有一个ArticleFormModel包含正常发送的数据html form由 Spring 使用注入 ModelAttribute注释 即 RequestMapping value edit method RequestMethod PO

随机推荐

  • 干货!MES系统选型必须要考虑的9点要素!

    你所在的企业是否为这些问题困扰 纸质化管理混乱 物料供应不及时 设备数据难采集 生产进度难透明 如果是的话 你的企业需要MES系统的帮助 MES是制造执行系统 Manufacturing Execution System 的缩写 它是一种信
  • 波奇学Linux:Linux进程状态,进程优先级

    编写一个程序模拟进程 查看进程状态 修改代码后发现进程状态为由S 变成R R为运行态 S为阻塞态 第一次为S是因为调用了外设 printf调用屏幕外设 实际上应该为R S状态轮换 但是R太快了 所以每次查到了都为S R 为前台运行 运行ba
  • 如何挑选比较便宜的VPS省钱攻略

    在今天的数字时代 许多人需要强大的VPS来托管他们的网站 应用程序或在线业务 然而 VPS的价格可能会相当高昂 对于那些在预算有限的情况下寻找可行解决方案的人来说 这可能会成为一个挑战 在本文中 我们将分享一些有关如何挑选比较便宜的VPS的
  • 聚焦算力网络,Aginode焕新品牌内核

    12月8日 由Aginode 原耐克森通讯系统 主办的 算达今昔 智见未来 Aginode 2023智慧互联峰会 在上海成功举行 作为通讯和数据网络领域的一次技术盛会 本次峰会汇集了来自不同行业领域的专家学者 重点聚焦算力网络的发展趋势 向
  • CNS0创建交货单没有WBS元素

    1 问题 CNS0创建交货单带不出WBS 但是交货单过账之后 又可以读取到WBS 2 原因 2 1 项目挂料 创建项目挂料时 当物料为通用料 则在网络中挂料时 采购类型为网络预留 当物料为专用料 则在网络中挂料时 采购类型为WBS要素预留
  • 题解 | #查找入职员工时间排名倒数第三的员工所有信息#

    转转深圳这波操作是真的服了 转转毁了多少意向 阿里1688暑期实习Java二面 2023 3 15 阿里1688一面 24秋招总结 新生一学期敲70万行代码 秋招结束 前天谈薪 明天准备签了 傻叉研究生 人保财险一面 人保科技 二面 快过年
  • 题解 | #反转链表#很简单,新建节点插在末尾就行

    华为车bu最新情况汇总 华为车bu最新情况汇总 某小厂实习面经 已oc 华子开了 比亚迪vs华为 麻烦大家帮忙比较一下offer 帮选offer 秋招决赛圈 offer选择 太难了呜呜呜帮忙选一下Offer 晒一晒我的offer 38210
  • 亚洲VPS行业深度分析:如何选择最适合你的服务

    在数字化时代 亚洲地区的企业和个人越来越需要可靠的VPS服务 本文将深入分析亚洲VPS行业 以帮助你选择最适合你需求的服务 为什么选择VPS VPS是一种虚拟服务器 具有更高的性能和稳定性 适合网站托管 应用程序开发和数据存储等用途 在亚洲
  • 面试想拿 10K,HR 说你只值 7K,该怎样回答或者反驳?

    傲韦科技二面 拷打项目30分钟 随便聊20分钟1 shardingsphere是什么 怎么用的 分片键如何选择的 电话关联表和邮箱关联表为什么要分开搞 敏感信息加密存储 实 题目解析 题目描述 给出一个矩阵 求出其中的最大值及所在的行号和列
  • 题解|#E. Sending a Sequence Over the Network# cf round 826

    入职半年 成长颇多 秋招逃兵 2020秋招面经大汇总 旷视 回暖分析 战绩结算 on 赛文X 体制内离职 奔赴下一场山海 拒了华为 重回0 offer 体制内离职 奔赴下一场山海 拒了华为 重回0 offer 找实习需要实习经历 应届生谨慎
  • 龙蜥位列用户意愿迁移系统首位,中国操作系统要敢于“亮剑”

    让前路 起后浪 迷茫过 怀疑过 跌倒过 熄不灭 眼中的光 摘自歌曲 行者为光 就像歌中所唱 国内操作系统的演进虽然是夹缝中求生存 却始终前赴后继 矢志不渝 从而逐步实现替代甚至跃升的过程 曾经占据市场主流的CentOS停服 像是一个信号 一
  • CN2 VPS引领行业革命:为什么每个企业都需要它

    在当今数字化时代 企业面临着巨大的在线竞争压力 为了在市场中脱颖而出并确保业务的可持续增长 可靠的网络基础设施是至关重要的 这就是为什么越来越多的企业正在转向CN2 VPS的原因 这一技术正在引领行业革命 为企业提供了更高效 更安全 更可靠
  • 24届友友们还想去腾讯!?哪些岗位还在热招?看这一篇就足够!

    分享虾皮Shopee面经 iOS方向 Shopee ios开发面经 广东工业大学电子信息硕士这么好找工作吗 秋招补录公司直投链接汇总 被鸽了32个sp 太难了 求大家投小米吧 华为给我oc了 问我毁不毁约 2023年最佳雇主榜单评选结果出来
  • 工业互联网会是制造业数字化发展的未来吗?

    新工业革命正逐步形成 你认为工业互联网会是制造业数字化发展的未来吗 从这几年的工业互联网发展政策措施 就能看到答案 早在近三年前 工业互联网创新发展行动计划 2021 2023年 就提出了五方面 11项重点行动和10大重点工程 着力解决工业
  • 在喜马拉雅直播运营mentor超级nice,弹性工作制

    12月校招补录开启 C 大类岗位12 14已更新 华子开奖 好未来测开一二三四面面经 联想 测开一面面经 攒人品 联想 4 13测开 面试 联想测开一面 联想测开二面 联想测开 面试 联想测开一面 联想测开一面 base天津 联想测开一二面
  • 国外免费VPS真的零成本云计算体验?

    在当今数字化时代 云计算已经成为企业和个人的热门选择之一 云计算提供了便捷 灵活和经济高效的计算资源 可以帮助人们处理数据 托管网站 运行应用程序等等 然而 对于一些初学者来说 使用云计算可能会变得有些昂贵 但是 有一种方式可以让您尝试云计
  • 工业级路由器在风力发电场的远程监控技术

    工业级路由器在风力发电场的远程监控技术方面具有重要的应用意义 风力发电场通常由分布在广阔地区的风力发电机组组成 需要进行实时监测 数据采集和远程管理 工业级路由器作为网络通信设备 能够提供稳定可靠的网络连接和多种远程管理功能 对于风力发电场
  • 开源、免费、可私有部署的在线多人协同办公系统推荐?

    开源 免费 可私有部署的在线多人协同办公系统推荐 在考虑选择在线多人协同办公系统时 免费且开源的方案看似经济实惠 但实际上可能存在一些潜在 隐性成本 比如在系统的维护 安全性 定制化需求以及技术支持方面可能会有额外的支出 企业在选择系统时应
  • 张正友相机标定法原理与实现

    张正友相机标定法是张正友教授1998年提出的单平面棋盘格的相机标定方法 传统标定法的标定板是需要三维的 需要非常精确 这很难制作 而张正友教授提出的方法介于传统标定法和自标定法之间 但克服了传统标定法需要的高精度标定物的缺点 而仅需使用一个
  • Java_Mybatis_缓存

    缓存 1 概述 Mybatis 缓存 MyBatis 内置了一个强大的事务性查询缓存机制 它可以非常方便地配置和定制 2 会话缓存 一级缓存 sqlSession 级别的 也就是说 使用同一个 sqlSession 查询同一 sql 时 直