文档章节

ITBATIS缓存

wi_wi
 wi_wi
发布于 2014/09/12 12:03
字数 673
阅读 17
收藏 0

cachemodel是ibatis里面自带的缓存机制,正确的应用能很好提升我们系统的性能。


使用方法:在sqlmap的配置文件中加入


<cacheModel type="LRU" id="article_cache" readOnly="true" serialize="false">

        <flushInterval hours="24"/>

        <flushOnExecute statement="articleLists.insertArticle"/>

        <property name="cache_size" value="50"/>        

</cacheModel>


在查询语句中使用缓存


<select id="getArticles" resultClass="articleList" parameterClass="articleList" cacheModel="article_cache">


先对cachemodel中一些用法进行解释一下:


type:是缓存的类型,ibatis中有4种方式,分别为MEMORY、LRU、FIFO、OSCACHE


          MEMORY是内存缓存,和Java内存管理机制类似分为[SOFT、WEAK、STRONG]


          LRU是使用最近最少使用策略


          FIFO是使用先进先出策略


          OSCACHE是通过第三方的缓存插件实现


id:是cachemodel的一个标识


readOnly:指缓存的数据对象是只读还是可读写,默认只读,这里的只读并不是意味着数据对象一旦放入缓存中就无法再对数据进行修改。而是当数据对象发生变化的时候,如数据对象的某个属性发生了变化,则此数据对象就将被从缓存中废除,下次需要重新从数据库读取数据,构造新的数据对象。而readOnly="false"则意味着缓存中的数据对象可更新.

serialize:只有在readOnly为false的情况下才生效,因为在readOnly为true时,所有数据对象相同,只有可读写时,才会出现不同的session拥有不同的数据对象副本。


flushInterval:指定缓存自动刷新的时间,可以为hours,minutes,seconds,milliseconds.


flushOnExecute:指定在发生哪些操作时,更新缓存。


property:不同type的cachemodel有不同的属性。


----------------------------------------------------------------------------


下面是本人自己做的实验的一些结果:


(1)当readOnly=true ,serialize=false,只指定insert更新缓存时,我在update一个article的属性后,发现之前的相同的查询条件查询结果是缓存的内容,没取到更新的结果;当我改变查询条件时,出现了更新的结果。由此可见当readonly=true,查询条件不变时,即使发生更新,缓存仍然有效;而查询条件变更时,缓存失效,用新的sql去数据库查询。当发生insert操作时,不管查询条件是否变化,都重新去数据库查询,缓存被更新。


(2)当readOnly=false,serialize=false,只指定insert更新缓存时,update一个article属性后,缓存失效,重新去数据库查询


综上来看,对更新比较频繁的数据,使不使用感觉效率差不多,对更新不是很频繁的数据,使用缓存效率还是能提升的!


本文转载自:http://www.cnblogs.com/phoebus0501/archive/2011/05/17/2048462.html

wi_wi
粉丝 1
博文 74
码字总数 10507
作品 0
深圳
程序员
私信 提问
缓存系统中面临的雪崩/穿透/一致性问题

计算机科学中有两件难事:缓存失效和命名 – Phil Karlton From Martin Fowler : TwoHardThings 缓存系统一定程度上极大提升系统并发能力,但同样也增加额外技术考虑因素,下面针对缓存系统设...

架构师springboot
02/13
38
0
全面讲解Hibernate缓存

在向大家详细介绍Hibernate二级缓存之前,首先让大家了解下一级缓存,然后全面介绍Hibernate二级缓存。 Hibernate中提供了两级Cache,第一级别的缓存是Session级别的缓存,它是属于事务范围的...

dong.li
2012/04/24
452
0
Hibernate查询缓存全面分析

这里介绍Hibernate查询缓存对Iterator不起作用,只对List起作用。下面我们这种介绍把二级缓存 和 Hibernate查询缓存 结合使用。 AD: 本文向大家介绍Hibernate查询缓存,可能好多人还不了解H...

dong.li
2012/04/24
320
0
Asp.Net MVC 缓存

Asp.Net MVC 缓存 缓存是一种保存资源副本并在下次请求时直接使用该副本的技术。当 web 缓存发现请求的资源已经被存储,它会拦截请求,返回该资源的拷贝。 Web应用缓存技术大体上可以分为两类...

JoeSnail
2017/12/06
0
0
hibernate 缓存机制

缓存:缓存是什么,解决什么问题? 位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之为缓存Cache。缓存目的:让数据更接近于应用程序,协调速度不匹配...

世界和平维护者
2016/08/09
74
0

没有更多内容

加载失败,请刷新页面

加载更多

IT兄弟连 HTML5教程 HTML5表单 小结及习题

小结 HTML表单提交的方法有get方法和post方法,get方法的作用是从指定的资源请求数据,post方法的作用是向指定的资源提交要被处理的数据。HTML表单一直都是Web的核心技术之一,有了它我们才能...

老码农的一亩三分地
17分钟前
9
0
向maven工程中导入自己封装好的jar包方法

1.打开cmd窗口 输入并执行:mvn install:install-file -DgroupId=com.test   -DartifactId=ptest -Dversion=0.1  -Dfile=E:\test\test-0.1.0.jar    -Dpackaging=jar注:Dgr......

gantaos
19分钟前
3
0
【jQuery基础学习】09 jQuery与前端(这章很水)

本文转载于:专业的前端网站➨【jQuery基础学习】09 jQuery与前端(这章很水) 这章主要是将如何将jQuery应用到网站中,或者说其实就是一些前端知识,对于我这种后端程序来说其实还是蛮有用的...

前端老手
31分钟前
8
0
深度科技与金山云完成兼容互认证 共同促进我国软件生态发展

近日,深度科技与金山云完成兼容互认证工作,经双方共同严格测试,深度操作系统ARM服务器版软件V15与金山云分布式数据库软件DragonBase V1.0相互兼容、稳定运行,可以为企业级应用提供全面保...

后浪涛涛
31分钟前
7
0
Less导入选项

Less 提供了CSS @import CSS规则的几个扩展,以提供更多的灵活性来处理外部文件。 语法: @import (keyword) "filename"; 以下是导入指令的相关详情: reference,使用较少的文件但不输出。 ...

凌兮洛
47分钟前
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部