MyBatis 一级缓存和二级缓存及ehcache整合

一级缓存

什么是缓存??

  缓存是存储在内存(cache)中的数据,一般情况都存在内存,在内存数据存储满了,会存储到硬盘上(disk),或是在我们进行一些操作和配置也可以把缓存存储到磁盘中。

缓存的作用是什么??

  缓存的作用可以减轻数据库的压力,减少用户对数据库的访问,可以说用户对数据库进行的重复操作在缓存中就可以实现操作,提高用户体验。

下面这张图是缓存的理解图

曾删改会对缓存造成影响。

写个测试,测试一下缓存是否存在:   答案是肯定的

现在测试一下进行曾删改数据,是否会对缓存造成影响?

二级缓存

二级缓存和一级缓存的区别,  一级缓存是存储在SqlSession作用域中生命周期是整个会话是进程级别的,二级缓存是可以跨进程的,实现数据共享。作用域是Mapper。

缓存的底层其实是个Map集合,key用于存储SQLId和sql,value存储的是sql的引用。

二级缓存默认是开启的,在大配置中,但是开启二级缓存要有三个要素。

二级缓存的开启方式:  1.在大配置中的setting设置二级缓存  2.在小配置中写cache自闭和标签  3.实体类继承Serializable

二级缓存的作用比一级缓存大,二级缓存并不是在一个会话中起作用,将一个会话结束,开启另一个会话二级缓存是否会起作用

ehcache缓存的配置

为什么要配置ehcache?

  因为ehcache是专注缓存这块的,比mybatis自身的要快捷方便很多,因为mybatis注重的是框架。

1.在resources下可以上网查一下这个文件

2.在小配置中增加一条type写的是你ehcache的全路径

3.在项目的pom.xml引入ehcahce的jar包

原文地址:https://www.cnblogs.com/java-263/p/9955965.html

时间: 2024-08-13 17:37:32

MyBatis 一级缓存和二级缓存及ehcache整合的相关文章

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

正如大多数持久层框架一样,MyBatis同样提供了一级缓存和二级缓存的支持 1. MyBatis一级缓存基于PerpetualCache的HashMap本地缓存,其存储作用域为 Session,默认情况下,一级缓存是开启状态的.当 Session flush(); 或 close(); 之后,该Session中的所有 Cache 就将清空. 2.MyBatis二级缓存与一级缓存其机制相同,默认也是采用 PerpetualCache,HashMap存储,不同在于其存储作用域为 Mapper(Nam

Mybatis中的一级缓存和二级缓存

1.概述 mybatis提供查询缓存主要是为了减轻了数据库的压力,提高了系统的性能. 缓存分为一级缓存和二级缓存,他们之间的关系和区别如下: 一级缓存是sqlSession级别的缓存.在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构(hashmap)对象缓存数据.不同的sqlSession之间的数据缓存区域是不互相影响的. 二级缓存是mapper级别的缓存.多个sqlSession去操作同一个mapper中的sql语句,多个sqlSession共享同一个Mapper的二级缓

Mybatis学习笔记-一级缓存与二级缓存

1.一级缓存:基于PerpetualCache的HashMap本地缓存,其存储作用域为session,当session被flush或close之后,该session中的所有Cache就将清空. 2.二级缓存与一级缓存机制相同,默认也采用PerpetualCache HashMap存储,不同在于其存储作用域为Mapper(Namespace),并且可自定义存储源,如Ehcache. 3.对于缓存数据更新机制,当一个作用域(一级缓存session/二级缓存Namespace )进行了C/U/D操作后

mybatis 一级缓存和二级缓存

1.默认是会话期内 一级session缓存 2.二级缓存: 引入二级缓存的jar, 配置 ehcache.xml, mapper.xml引入缓存<cache type="org.mybatis.caches.ehcache.EhcacheCache"></cache> 如下mapper: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PU

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

什么是延迟加载  resultMap中的association和collection标签具有延迟加载的功能. 延迟加载的意思是说,在关联查询时,利用延迟加载,先加载主信息.使用关联信息时再去加载关联信息. 设置延迟加载 需要在SqlMapConfig.xml文件中,在<settings>标签中设置下延迟加载. lazyLoadingEnabled.aggressiveLazyLoading 设置项 描述 允许值 默认值 lazyLoadingEnabled 全局性设置懒加载.如果设为'fals

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

前言 使用ORM框架我们更多的是使用其查询功能,那么查询海量数据则又离不开性能,那么这篇中我们就看下mybatis高级应用之延迟加载.一级缓存.二级缓存.使用时需要注意延迟加载必须使用resultMap,resultType不具有延迟加载功能. 一.延迟加载 延迟加载已经是老生常谈的问题,什么最大化利用数据库性能之类之类的,也懒的列举了,总是我一提到延迟加载脑子里就会想起来了Hibernate get和load的区别.OK,废话少说,直接看代码. 先来修改配置项xml. 注意,编写mybatis

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

什么是延迟加载  resultMap中的association和collection标签具有延迟加载的功能. 延迟加载的意思是说,在关联查询时,利用延迟加载,先加载主信息.使用关联信息时再去加载关联信息. 设置延迟加载 需要在SqlMapConfig.xml文件中,在<settings>标签中设置下延迟加载. lazyLoadingEnabled.aggressiveLazyLoading 设置项 描述 允许值 默认值 lazyLoadingEnabled 全局性设置懒加载.如果设为'fals

mybatis一级缓存和二级缓存(三)

缓存详细介绍,结果集展示 https://blog.csdn.net/u013036274/article/details/55815104 配置信息 http://www.pianshen.com/article/16399265/ ************详细介绍************* https://my.oschina.net/zjllovecode/blog/1817577?from=timeline&isappinstalled=0 一级缓存基于sqlSession默认开启,在操

Mybatis一级缓存和二级缓存总结

1:mybatis一级缓存:级别是session级别的,如果是同一个线程,同一个session,同一个查询条件,则只会查询数据库一次 2:mybatis二级缓存:级别是sessionfactory级别的,是针对于各个线程发出的sql查询条件 3:spring 关闭了mybatis的一级缓存,每一次查询都会建立一次连接,创建新的session,源码类有: MapperFactoryBean.SqlSessionDaoSupport.SqlSessionTemplate:在SqlSessionTem

MyBatis框架一级缓存与二级缓存

Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-s