1.mybatis一级缓存,sqlSesion级别的缓存,一级缓存默认一直开启的,sqlSession级别的一个Map,把查询的数据放到一个Map中,以后需要相同的数据,直接从Map中去取

与数据库一次会话期间,查询到的数据会放到本地缓存中

以后需要相同的数据,直接从缓存中拿,不再去从数据中查询

2.mybatis一级缓存失效情况

(1)sqlSession不同

(2)sqlSession相同,查询条件不同,(如查询了id为1的员工,再去查id为2的员工,一级缓存失效,当前一级缓存还没有数据)

(3)sqlSession相同,两次查询之间执行了增删改查操作(这个增删改查可能对当前数据有影响)

(4)sqlSession相同,手动清除一级缓存,如使用openSession.clearCache()

3.mybatis二级缓存

场景:一个会话,查询一条数据,这个数据会被放到一级缓存中

如果会话关闭,一级缓存的数据会被保存到二级缓存中

不同的namespace查询的数据会放到自己对应的缓存中(map)

实现效果:数据从二级缓存获取

查询到的数据会默认放到一级缓存中

只有会话提交或者关闭,一级缓存中的数据才会被转到二级缓存中

使用二级缓存

(1)在mybatis-config.xml中配置

<!-- 全局启用mybatis二级缓存 -->
<setting name="cacheEnabled" value="true"/>

(2)在mapper.xml中添加<cache>标签

<cache eviction="FIFO" flushInterval="60000" readOnly="false" size="1024"></cache>
eviction:缓存回收策略
LRU-最近最少使用的,移除最长时间不被使用的对象
FIFO-先进先出,按对象进入缓存的顺序来移除他们
SOFT-弱引用,移除基于垃圾回收器状态和软引用规则的对象
WEAK-弱引用:更积极地移除基于垃圾收集器状态和弱引用规则的对象
默认的是LRU
flushInterval:缓存刷新间隔
缓存多长时间清空一次, 默认不清空,设置一个毫秒值
readOnly:是否只读
true:只读,mybatis认为所有从缓存中获取数据的操作都是只读操作,不会修改数据
mybatis为了加快获取速度,直接将数据在缓存的引用交给用户,不安全,速度快
false:非只读,mybatis觉得获取的数据可能会被修改
mybatis会利用序列化&反序列化的技术克隆一份新的数据给用户,安全,速度慢
默认为false
size:缓存最放多少元素
type:指定自定义缓存全类名 (3)POJO实现序列化接口 implements Serializable
 

mybatis的一级缓存和二级缓存(1)的更多相关文章

  1. [原创]关于mybatis中一级缓存和二级缓存的简单介绍

    关于mybatis中一级缓存和二级缓存的简单介绍 mybatis的一级缓存: MyBatis会在表示会话的SqlSession对象中建立一个简单的缓存,将每次查询到的结果结果缓存起来,当下次查询的时候 ...

  2. MyBatis 延迟加载,一级缓存,二级缓存设置

    什么是延迟加载 resultMap中的association和collection标签具有延迟加载的功能. 延迟加载的意思是说,在关联查询时,利用延迟加载,先加载主信息.使用关联信息时再去加载关联信息 ...

  3. mybatis高级(3)_延迟加载_深度延迟_一级缓存_二级缓存

    设置延迟加载需要在mybatis.xml中设置 注: 侵入式延迟加载为真时是延迟加载 侵入式延迟加载为假时是深度延迟加载 <!-- 延迟加载和深度延迟加载 --> <settings ...

  4. 9.Mybatis一级缓存和二级缓存

    所谓的缓存呢?其实原理很简单,就是在保证你查询的数据是正确的情况下,没有去查数据库,而是直接查找的内存,这样做有利于缓解数据库的压力,提高数据库的性能,Mybatis中有提供一级缓存和二级缓存. 学习 ...

  5. 八 mybatis查询缓存(一级缓存,二级缓存)和ehcache整合

    1       查询缓存 1.1     什么是查询缓存 mybatis提供查询缓存,用于减轻数据压力,提高数据库性能. mybaits提供一级缓存,和二级缓存.

  6. myBatis学习(9):一级缓存和二级缓存

    正如大多数持久层框架一样,MyBatis同样提供了一级缓存和二级缓存的支持 1. MyBatis一级缓存基于PerpetualCache的HashMap本地缓存,其存储作用域为 Session,默认情 ...

  7. mybatis 详解(九)------ 一级缓存、二级缓存

    上一章节,我们讲解了通过mybatis的懒加载来提高查询效率,那么除了懒加载,还有什么方法能提高查询效率呢?这就是我们本章讲的缓存. mybatis 为我们提供了一级缓存和二级缓存,可以通过下图来理解 ...

  8. MyBatis从入门到放弃六:延迟加载、一级缓存、二级缓存

    前言 使用ORM框架我们更多的是使用其查询功能,那么查询海量数据则又离不开性能,那么这篇中我们就看下mybatis高级应用之延迟加载.一级缓存.二级缓存.使用时需要注意延迟加载必须使用resultMa ...

  9. Mybatis第八篇【一级缓存、二级缓存、与ehcache整合】

    Mybatis缓存 缓存的意义 将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题. myba ...

  10. MyBatis 一级缓存,二级缓存,延迟加载设置

       1  什么是延迟加载  resultMap中的association和collection标签具有延迟加载的功能. 延迟加载的意思是说,在关联查询时,利用延迟加载,先加载主信息.使用关联信息时再 ...

随机推荐

  1. Cookies and Session Tracking Client Identification cookie与会话跟踪 客户端识别

    w HTTP The Definitive Guide Cookies can be used to track users as they make multiple transactions to ...

  2. 并发编程 - 进程 - 1.开启子进程的两种方式/2.查看pid/3.Process对象的其他属性或方法/4.守护进程

    1.开启子进程的两种方式: # 方式1: from multiprocessing import Process import time def task(name): print('%s is ru ...

  3. opencv亚像素级角点检测

    一般角点检测: harris cv::cornerHarris() shi-tomasi cv::goodFeaturesToTrack() 亚像素级角点检测是在一般角点检测基础之上将检测出的角点精确 ...

  4. 《OVN Logical Flows and ovn-trace》翻译

    在本篇文章中,我将解释什么是Logical Flow以及如何使用ovn-trace去更好地理解它们.同时,我也会用一些例子来解释,为什么使用Logical Flow这种抽象模型能让新特性的添加变得出乎 ...

  5. Python 装饰器的诞生过程

    ​ Python中的装饰器是通过利用了函数特性的闭包实现的,所以在讲装饰器之前,我们需要先了解函数特性,以及闭包是怎么利用了函数特性的 ① 函数特性 Python中的函数特性总的来说有以下四点: 1. ...

  6. javascript 之 valueOf

    var m = { i:10, toString:function () { console.log('toString'); return this.i; }, valueOf:function ( ...

  7. 【云安全与同态加密_调研分析(1)】国外云安全标准机构——By Me

    在云计算领域,传统的信息安全管理标准如ITIL.ISO/IEC20000.ISO/IEC27001.27002.Cobit等被建议应用于云计算安全管理和控制框架的建立.此外,由于云计算本身区别于传统信 ...

  8. excel判断单元格包含指定内容的函数用=IF(COUNTIF(A1,"*内容*"),"0","1")

    前面我们聊过怎样将Excel包含某字符的单元格填充颜色,这边我们用另外一种方法来实现:excel判断单元格包含指定内容的函数 选中需要显示结果的单元格,假设我们要判断第一行第一列的单元格A1是否含有“ ...

  9. thunk函数

    1.函数参数求值的策略 a.传值策略(c语言) 传值策略就是在进入函数体之前将 参数计算之后 将参数的值传入到函数体之中. let x = 8 f(x + 1)//参数为 f(9)//传进去的值实际上 ...

  10. Cookie , Session ,Session 劫持简单总结

    cookie 机制: Cookies 是 服务器 在 本地机器 上存储的 小段文本,并伴随着 每一个请求,发送到 同一台 服务器. 网络服务器 用 HTTP头 向客户端发送 Cookies.在客户端, ...