文档章节

博为峰JavaEE技术文章 ——MyBatis 缓存(1)

博为峰教研组
 博为峰教研组
发布于 2017/02/13 19:19
字数 607
阅读 2
收藏 0

跟现在流行的大多数持久层框架一样,MyBatis 同样提供了缓存机制。持久层缓存的目的,为了降低应用层对物理数据源(如:数据库)访问的频次,提高应用程序整体性能。缓存将复制数据物理数据源中的数据(或加工后的数据),程序运行时直接从缓存读写数据,在特定的时刻或事件发生时会同步缓存和物理数据源的数据。

开启mybatis的cache功能很简单,只需要在mappper的xml文件里添加以下节点:

这个cache元素的配置,可以起到以下作用:

1. 该Mapper中的所有 select 语句将会被缓存。

2. 该Mapper中的所有 insert,update 和 delete 语句会刷新缓存。

3. 缓存使用“最近最少使用”的算法来收回。

4. 60000毫秒来刷新一次缓存。

5. 缓存会存储1024个列表集合或对象的引用。

6. 存会给所有调用者返回缓存对象的相同实例,因此这些缓存不能被修改。

 

小博老师给大家详细介绍下cache元素的几个属性的含义:

Eviction(缓存回收策略),可用的收回策略有:

LRU – 最近最少使用的:移除最长时间不被使用的对象。

FIFO – 先进先出:按对象进入缓存的顺序来移除它们。

SOFT – 软引用:移除基于垃圾回收器状态和软引用规则的对象。

WEAK – 弱引用:更积极地移除基于垃圾收集器状态和弱引用规则的对象。

默认的是 LRU。

 

flushInterval(刷新间隔)可以被设置为任意的正整数,单位是毫秒。默认情况是不设置,不会间隔刷新缓存,仅仅调用语句时刷新。

 

size(引用数目)可以被设置为任意正整数,缓存的对象数目,默认值是 1024。

 

readOnly(只读)属性可以被设置为 true 或 false。设置为true意味着该缓存只读。只读缓存会给所有调用者返回缓存对象的相同实例。缓存对象对象不能被修改,性能优势突出。可读写的缓存会返回缓存对象的拷贝(通过序列化) 。性能较低,但是安全性突出,因此默认是 false。

© 著作权归作者所有

共有 人打赏支持
博为峰教研组
粉丝 50
博文 1224
码字总数 479077
作品 0
黄浦
程序员
图解 & 深入浅出 JavaWeb:Servlet 再说几句

Writer :BYSocket(泥沙砖瓦浆木匠) 微 博:BYSocket 豆 瓣:BYSocket FaceBook:BYSocket Twitter :BYSocket 上一篇的《 Servlet必会必知 》受到大家一致好评 — (感谢 读者 及 OSC 推荐...

泥沙砖瓦浆木匠
2015/09/03
0
13
技术专题讨论:如何对 JPA 或者 MyBatis 进行技术选型

在我们平时的项目中,大家都知道可以使用 JPA 或者 Mybatis 作为 ORM 层。对 JPA 和 Mybatis 如何进行技术选型? 下面看看大精华总结如下: 最佳回答 首先表达个人观点,JPA必然是首选的。 ...

后海
06/27
0
0
图解 & 深入浅出 JavaWeb:Servlet必会必知

Writer :BYSocket(泥沙砖瓦浆木匠) 微 博:BYSocket 豆 瓣:BYSocket FaceBook:BYSocket Twitter :BYSocket “眨眼间,离上一篇写技术博文时隔1个月。怕自己真的生疏了,都是备案太慢惹...

KeepMoving
2015/08/25
0
0
图解 & 深入浅出 JavaWeb:Servlet必会必知

Writer :BYSocket(泥沙砖瓦浆木匠) 微 博:BYSocket 豆 瓣:BYSocket FaceBook:BYSocket Twitter :BYSocket “眨眼间,离上一篇写技术博文时隔1个月。怕自己真的生疏了,都是备案太慢惹...

泥沙砖瓦浆木匠
2015/08/21
0
50
JSP运行原理与JSP隐式对象(9个)

一、JSP运行原理 Web容器(Servlet引擎)接收到.jsp为扩展名的URL访问请求时,它将把该访问请求交给JSP引擎去处理,JSP引擎负责解释和执行JSP页面。 当Web容器接收到客户端的访问请求时,它将...

KYZGJ
2014/04/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

flume -- fileChannel简要分析其过程

flume之event写入FileChannel doPut(event)-->获取共享锁后[log.lockShared();]-->FlumeEventPointer ptr = log.put(transactionID, event); 此处的log.put即将transactionID及event进行后续......

-九天-
11分钟前
0
0
Linux与FreeBSD有什么区别?

基础 许多人所称的“Linux”实际上不是 Linux。Linux 从技术上说只是 Linux 内核,典型的 Linux 发行版则包括了 Linux 内核和许多软件。这是为什么 Linux 有时被称为 GNU/Linux。事实上,许多...

linux-tao
19分钟前
0
0
jQuery学习笔记180924

jQuery - AJAX 简介 什么是 AJAX? AJAX = 异步 JavaScript 和 XML(Asynchronous JavaScript and XML)。 简短地说,在不重载整个网页的情况下,AJAX 通过后台加载数据,并在网页上进行显示...

颖伙虫
32分钟前
1
0
springboot整合vue小试牛刀

序 本文主要研究一下如何在springboot工程整合vue maven <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-we......

go4it
33分钟前
1
0
使用python的profiler工具

主要用来检测python coding的执行时间 fly profiler

steel7c4
37分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部