软讯网络 > 编程语言 > Java > 使用IBatis作数据缓存
【标 题】:使用IBatis作数据缓存
【关键字】:
IBatis
【来 源】:http://blog.csdn.net/pwlazy/archive/2006/08/10/1046197.aspx
使用IBatis作数据缓存

背景:做一个排行榜,由于网站访问量很大,为了避免每次都直接访问数据库,所以采用缓存策略
目前我们采用IBatis作ORM, 所以我们直接使用了IBatis 自带的缓存解决方案。当然你也可以定制,我在我的一篇文章
可复用、扩展的缓存设计方案也谈到了如何定制 ,个人认为如果不是非常复杂的需求,完全可以借助ORM自带的方案.你会发现非常非常简单.
下面我们进入实战:
step1)写ibatis的相关配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-2.dtd">

<sqlMap namespace="specialtopic">

............
<cacheModel id="getTopVideoListByColumn1-cache" type ="OSCACHE" readOnly="true" serialize="false">
<flushInterval seconds="60"/>
<property name="cache-size" value="1000" />
</cacheModel>
............
<statement id="getTopVideoListByColumn1" resultMap="top-Video-column1" cacheModel="getTopVideoListByColumn1-cache">
select v.videoId,v.title,v.timeSpan,tu.loginName,vr.viewedCount
from top_baby_video tbv
inner join video v on tbv.videoId=v.videoId
inner join video_report vr on v.videoId=vr.videoId
inner join tvUser tu on v.tvUserId=tu.tvUserId
</statement>
</sqlMap>
显而易见上面的cacheModel是缓存策略, 只需加在statement段的属性中即可
step2)写dao方法

public List getTopVideoListByColumn1 ()...{
List list = this.getSqlMapClientTemplate().queryForList("getTopVideoListByColumn1",
null);
return list;
}

就是这么简单,从客户端的角度看,缓存是透明的.你可以从配置文件修改你的缓存策略,不会对你的java代码造成任何影响.