文档章节

mybatis一级缓存和二级缓存

龙鸣
 龙鸣
发布于 2015/04/27 16:09
字数 374
阅读 31
收藏 0
点赞 0
评论 0

mybatis缓存主要实现是PerpetualCache。

一级缓存实现:

BaseExecutor --> localCache参数。

    当session.close()的时候会回调Excutor.close方法,从而情况本地缓存,所以一级缓存的生命周期和session同步,而且缓存是通过:

createCacheKey(ms, parameter, rowBounds, boundSql); localCache.putObject(key, list);


这里直的key的成分包含了sql参数,所以不同参数相同statement也会发起两次sql,所以这里缓存的也是对象(之前在一个博客上看到博主说是缓存的sql语句,是错误的,,如果看客有疑问或者问题希望留言告知)。

二级缓存:

    需要在mybatis.xml里的settings开启:

<setting name="cacheEnabled" value="true"/>
这里开启后Configurtion里就会使用CacheExcutor,默认实现也是 PerpetualCache,当然可以在mapper.xml里指定自己的cache,这里使用ehcache的实现。

<cache type="org.mybatis.caches.ehcache.LoggingEhcache"/>
这个cache是通过MapperStatement注入到cacheExcutor的,当调用cacheExcutor.query的时候会注入进去。

当调用session.close的时候只会删除一级缓存,而二级缓存还会放在CacheExcutor.TransactionalCacheManager里面。当调用update的时候会根据isFlushCacheRequired来判断是否需要清除缓存,isFlushCacheRequired在mapper.xml里的sql文里配置flushCache属性。

这里有个疑问:之前看别人博客说只要进行插入更新就会清空二级缓存,但这里的代码是只有指定fushCache为true才会去删缓存,还需看代码才行。。

© 著作权归作者所有

共有 人打赏支持
龙鸣
粉丝 3
博文 12
码字总数 5345
作品 0
常州
后端工程师
11.平凡之路-缓存

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

胖先森 ⋅ 2017/09/05 ⋅ 0

mybatis入门教程(九)------mybatis缓存

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

残风vs逝梦 ⋅ 2014/06/16 ⋅ 5

Mybatis一级缓存、二级缓存

以下内容来自美团技术博客:聊聊MyBatis缓存机制 前言 MyBatis是常见的Java数据库访问层框架。在日常工作中,开发人员多数情况下是使用MyBatis的默认缓存配置,但是MyBatis缓存机制有一些不足...

为了美好的明天 ⋅ 05/23 ⋅ 0

MyBatis学习总结(七)——Mybatis缓存

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

zhanghaiyang ⋅ 2015/12/31 ⋅ 0

聊聊 MyBatis 缓存机制

前言 MyBatis是常见的Java数据库访问层框架。在日常工作中,开发人员多数情况下是使用MyBatis的默认缓存配置,但是MyBatis缓存机制有一些不足之处,在使用中容易引起脏数据,形成一些潜在的隐...

鉴客 ⋅ 05/14 ⋅ 0

Mybatis (四) 缓存机制

许多运用程序为了提高性能而增加缓存,特别是从数据库中获取的数据,如果缓存中没有,就到表中去查询,表查询的数据添加到缓存中去,下次查询是直接从缓存中读取,Mybatis 包含一个非常强大的...

什么都不懂的小石 ⋅ 2017/12/10 ⋅ 0

mybatis的缓存机制(一级缓存二级缓存和刷新缓存)和mybatis整合ehcache

大 中 小 mybatis的缓存机制(一级缓存二级缓存和刷新缓存)和mybatis整合ehcache 一、 查询缓存 1.1 什么是查询缓存 mybatis提供查询缓存,用于减轻数据压力,提高数据库性能。 mybaits提供...

LYQ1990 ⋅ 2016/05/26 ⋅ 0

mybatis - 查询缓存

查询缓存 mybatis提供两级查询缓存,用于减轻数据压力,提高数据库性能。默认状态下,mybatis开启了一级缓存。一级缓存是SqlSession级别的缓存。mybatis在操作数据库时需要构造sqlSession对象...

细肉云吞 ⋅ 2017/09/12 ⋅ 0

SSH框架之MyBatis专题4:查询缓存

查询缓存的使用,主要是为了提高查询访问速度。将用户对同一数据的重复查询过程简化,不再每次均从数据库中查询获取结果数据,从而提高访问速度。 MyBatis的查询缓存机制,根据缓存区的作用域...

糖醋白糖 ⋅ 04/07 ⋅ 0

mybatis缓存机制详解(一)——Cache

缓存概述 在mybatis中,缓存的功能由根接口Cache(org.apache.ibatis.cache.Cache)定义。整个体系采用装饰器设计模式,数据存储和缓存的基本功能由PerpetualCache(org.apache.ibatis.cache...

拉风小野驴 ⋅ 2016/02/24 ⋅ 1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

idea 整合 vue 启动

刚学习Vue 搭建了一个项目 只能命令启动 Idea里面不会启动 尝试了一下修改启动的配置 如下: 1.首先你要保证你的package.json没有修改过 具体原因没有看 因为我改了这个name的值 就没办法启动...

事儿爹 ⋅ 18分钟前 ⋅ 0

数据仓库技术概述(一看就是架构师写的,对我极其有用)

ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、交互转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于...

gulf ⋅ 19分钟前 ⋅ 0

redis在windows环境的后台运行方法

在后台运行,首先需要安装redis服务,命令为 redis-server.exe --service-install redis.windows.conf --loglevel verbose 启动,命令为 redis-server --service-start 停止,命令为 redis-...

程序羊 ⋅ 21分钟前 ⋅ 0

比特币现金开发者提出新的交易订单规则

本周,四位比特币现金的四位开发者和研究员:Joannes Vermorel(Lokad),AmaurySéchet(比特币ABC),Shammah Chancellor(比特币ABC)和Tomas van der Wansem(Bitcrust)共同发表了一篇关...

lpy411 ⋅ 25分钟前 ⋅ 0

vue获取input输入框的数据

用惯了jQuery,突然使用vue感觉很不习惯,有很多不同的地方,感觉是两个不同的思想来写前端的代码。jQuery是使用选择器($)选取DOM对象,对其进行赋值、取值、事件绑定等操作。而Vue则是通过...

王子城 ⋅ 27分钟前 ⋅ 0

竟然这就是面向对象的游戏设计?!

从程序角度考虑,许多 JavaScript 都基于循环和大量的 if/else 语句。在本文中,我们可了解一种更聪明的做法 — 在 JavaScript 游戏中使用面向对象来设计。本文将概述原型继承和使用 JavaSc...

柳猫 ⋅ 32分钟前 ⋅ 2

git cmd git bash

刚用到了Git,看到windows环境下有两个命令输入窗口 第一个是可视化图形界面,第二个是CMD,第三个是Bash。 Git中的Bash是基于CMD的,在CMD的基础上增添一些新的命令与功能。所以建议在使用的...

东东笔记 ⋅ 34分钟前 ⋅ 0

分布式系统CAP和Base

1、分布式系统 1.1 简介 由多台计算机和通信的软件组件通过计算机网络连接(本地网络或广域网)组成。分布式系统是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的...

xixingzhe ⋅ 45分钟前 ⋅ 0

查看磁盘占用情况

记一次jenkins构建失败的问题 Build step 'Send build artifacts over SSH' changed build result to UNSTABLE 网上查资料都没明确表明是什么错,回忆之前处理这样的问题。第一时间想到的是不...

ManderSF ⋅ 46分钟前 ⋅ 0

数据库管理提速:SQL解析的探索与应用

前言: SQL解析是一项复杂的技术,一般都是由数据库厂商来掌握,当然也有公司专门提供SQL解析的API。SQL解析与优化是属于编译器范畴,和C语言等其他语言的解析没有本质的区别。其中分为词法分...

java高级架构牛人 ⋅ 53分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部