iBatis缓存的使用方法及解释

转载 2012年03月23日 15:37:11
iBatis的缓存配置比较简单易懂,以我使用的iBatis2.3为例,做以下配置即可实现对某些查询进行缓存: 
1、在sqlMap文件中加入cacheModel的配置: 
 <cacheModel id="model-cache" type="MEMORY" > 
<flushInterval seconds="60"/> 
<flushOnExecute statement="insertProduct"/> 
<flushOnExecute statement="updateProduct"/> 
<flushOnExecute statement="deleteProduct"/> 
<property name="size" value="1000" /> 
</cacheModel> 
2、配置需要进行cache的sql statment: 
<statement id="getProductList" parameterClass="int" cacheModel="model-cache"> 
select * from PRODUCT where PRD_CAT_ID = #value# 
</statement> 

配置好这两步就可实现iBatis的缓存了,下面解释一下含义: 
1步中,cacheModel的id属性用于后面的statement引用,type属性标识采用何种cache方式,可选的有: 
“MEMORY” (com.ibatis.db.sqlmap.cache.memory.MemoryCacheController) 。MEMORY cache 实现使用 reference 类型来管理 cache 的行为。垃圾收集器可以根据reference类型判断是否要回收 cache 中的数据。MEMORY实现适用于没有统一的对象重用模式的应用,或内存不足的应用。 
“LRU” (com.ibatis.db.sqlmap.cache.lru.LruCacheController) 。LRU Cache 实现用“近期最少使用”原则来确定如何从 Cache 中清除对象。当 Cache溢出时,最近最少使用的对象将被从 Cache 中清除。使用这种方法,如果一个特定的对象总是被使用,它将保留在 Cache 中,而且被清除的可能性最小。对于在较长的期间内,某些用户经常使用某些特定对象的情况(例如,在 PaginatedList 和常用的查询关键字结果集中翻页) ,LRU Cache 是一个不错的选择。 
“FIFO” (com.ibatis.db.sqlmap.cache.fifo.FifoCacheController) 。FIFO Cache 实现用“先进先出”原则来确定如何从 Cache 中清除对象。当 Cache 溢出时,最先进入 Cache 的对象将从 Cache 中清除。对于短时间内持续引用特定的查询而后很可能不再使用的情况,FIFO Cache 是很好的选择。 
“OSCACHE” (com.ibatis.db.sqlmap.cache.oscache.OSCacheController) 。OSCACHE Cache 实现是OSCache2.0缓存引擎的一个 Plugin。它具有高度的可配置性,分布式,高度的灵活性。 
flushInterval 属性是配置自动更新缓存的周期,可以是hours,minutes,seconds或milliseconds。这一点我测试了一下,设置的60秒更新,通过观察日志,在60秒内,第一次查询数据库,之后iBatis会对同样的sql查询直接返回。超过60秒后的第一次查询,又会执行一次查询。这样看了,这个更新的周期可理解为第一次同样的查询可维持在cache中的时长,超过这个时长的第一次查询会触发实际的数据库操作。 
flushOnExecute这是标识什么时候触发更新,statement的名字就是后面的statement的id。 
statement节中设置了cacheModel,就会把这个sql跟cache关联起来。 

来源:中国自学编程网

ibatis禁用缓存

在最近的项目开发中遇到一个问题,前端传一个表名到后台。ibatis发起查询,ibatis的xml如下 select * from $tableName$   测试的过程...
  • playleud
  • playleud
  • 2015年01月29日 13:44
  • 1267

ibatis缓存的设置使用

(一)背景 简而言之一句话,减少服务器处理次数,加快访问速度。 (二)ibatis缓存的使用方法 在要使用的xml模块中添加cacheModel模块,例如: (三...
  • u010408365
  • u010408365
  • 2015年11月22日 11:52
  • 1171

Ibatis的缓存机制

我们知道Hibernate有自己的缓存机制,Hibernate中分为一级缓存和二级缓存,其中的一级缓存是session缓存,是Hibernate封装好的,不需要我们做任何配置的,一级缓存 是与sess...
  • hai_cheng001
  • hai_cheng001
  • 2013年12月16日 21:30
  • 4676

不经意间用了ibatis的缓存引发的一个问题

昨天遇到了一个比较奇怪的现象。wo'm
  • zhutulang
  • zhutulang
  • 2014年05月14日 00:26
  • 2426

ibatis查询缓存

SqlMapConfig.xml:
  • cai7095576
  • cai7095576
  • 2015年04月19日 11:56
  • 732

redis扩展ibatis缓存

ibaits缓存介绍: 1、 http://www.cnblogs.com/yongze103/archive/2011/07/25/2116593.html 2、http://blog.csdn...
  • u012385190
  • u012385190
  • 2016年10月17日 14:23
  • 1332

ibatIS学习笔记---Ibatis的基本使用方法

1.ibatIS的基本使用方法,这里通过一个例子来学习 a.创梦技术qq交流群:CreDream:251572072 ---------------------------------------...
  • lidew521
  • lidew521
  • 2013年06月11日 13:40
  • 4278

引用iBatis中oscache实现自定义缓存及动态更新技巧

绝大部分情况,使用缓存对效率提升来说是一个非常大的性能提升,但在这种性能提升的背景,缓存数据是否有效,能否支持通知更新,缓存是否支持集群分布式这些问题是作为系统设计环节中必须要考虑的。     ...
  • cs123dn_ll
  • cs123dn_ll
  • 2016年04月15日 14:39
  • 646

IBATIS标签详解

ibatis标签详解
  • Earl_yuan
  • Earl_yuan
  • 2014年12月09日 09:36
  • 7622

ibatis使用方法

iBATIS3.0学习(一)使用iBATIS3.0完成增删改查 博客分类: iBATIS3 iBATISApacheSpringSQLJDBC  使用iBATIS3.0完成增删改查 ...
  • a3126248
  • a3126248
  • 2016年12月20日 21:42
  • 314
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iBatis缓存的使用方法及解释
举报原因:
原因补充:

(最多只允许输入30个字)