当前位置: 首页 > news >正文

Java_Mybatis_缓存

缓存

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 – 弱引用:更积极地基于垃圾收集器状态和弱引用规则移除对象。
<cacheeviction="FIFO"flushInterval="60000"size="512"readOnly="true"/>
  • flushInterval:刷新间隔,单位毫秒
  • size:引用数目,默认是1024
  • readOnly:只读操作默认是 false
    • true,会给调用的地方返回相同实例,对象不能修改
    • false:可以修改,返回实例的拷贝

4.缓存查询顺序

  • 先查二级缓存,范围比较大,可能有其它会话缓存的信息
  • 再查一级缓存
  • 再查数据库
  • 如果sqlSession关闭会把一级缓存信息缓存到二级缓存
http://www.lryc.cn/news/258965.html

相关文章:

  • C#基础面试题集
  • 可视化监管云平台EasyCVR宠物粮食食品厂智能视频监控方案
  • ArkUI组件
  • C语言--动态内存【详细解释】
  • 施工现场安全管理系统
  • 电线电缆行业生产管理MES系统解决方案
  • 滑动窗口最大值和前K个高频元素
  • C语言实现在顺序表中找到最大值
  • 数字工厂管理系统建设层级分为哪几层
  • MySQL 8 update语句更新数据表里边的数据
  • 可视化监控云平台/智能监控平台EasyCVR国标设备开启音频没有声音是什么原因?
  • L1-039:古风排版
  • 树莓派新手装机指南
  • flink使用事件时间时警惕kafka不同分区的事件时间倾斜问题
  • 『App自动化测试之Appium基础篇』| Desired Capabilities详解与使用
  • vscode插件webview和插件通信
  • 【STM32单片机】贪吃蛇游戏设计
  • 【Java 基础】32 定时调度
  • C++ 教程 - 02 复合数据类型
  • 【数据处理】NumPy数组的合并操作,如何将numpy数组进行合并?
  • JavaScript实现飘窗功能
  • Docker笔记:容器转换成镜像,导出导入镜像,数据拷贝,查看日志
  • 串行计时芯片D1380/D1381,2.0V~5.5V 工作电流: 2V时 与TTL 兼容,采用DIP8、SOP8封装
  • 中间件系列 - Redis入门到实战(基础篇)
  • 项目经理和产品经理该如何选择?
  • java WebSocket带参数处理使用
  • OkHttp: 拦截器和事件监听器
  • 总结一些vue3小知识2
  • 【Excel设置动态图表】
  • 用 C 写一个卷积神经网络