读书人

Mybatis3缓存设立

发布时间: 2012-08-11 20:50:31 作者: rapoo

Mybatis3缓存设置

开启缓存

默认情况下,缓存没有开启。要开启缓存,在SQL的映射文件中加入

?

<cache/>

?

?其作用为

?

? ?映射语句文件中的所有 select 语句将会被缓存。?

? ?映射语句文件中的所有 insert,update 和 delete 语句会刷新缓存。?

? ?缓存会使用 Least Recently Used(LRU,最近最少使用的)算法来收回。?

? ?根据时间表(比如 no Flush Interval,没有刷新间隔),缓存不会以任何时间顺序来刷新。?

? ?缓存会存储列表集合或对象(无论查询方法返回什么)的 1024个引用。?

? ?缓存会被视为是 read/write(可读/可写)的缓存,意味着对象检索不是共享的,而且可以安全地被调用者修改,而不干扰其他调用者或线程所做的潜在修改。?

?

?

设置缓存属性

?

<cache  eviction="FIFO"  flushInterval="60000 size="512"  readOnly="true"/> 

?

?这个含义是,回收策略为先进先出。最多保存512个引用,引用返回的对象是只读的,每隔60秒刷新一次

?

可用的收回策略有:?

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

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

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

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

默认的是 LRU。?

?

?

自定义缓存

?

<cache type=”com.domain.something.MyCustomCache”/> 

?

?定义的缓存要实现以下接口即可

?

 public interface Cache {             String getId();             int getSize();             void putObject(Object key, Object value);            Object getObject(Object key);             boolean hasKey(Object key);             Object removeObject(Object key);             void clear();             ReadWriteLock getReadWriteLock();        } 

?

?调用自定义缓存的方法

?

<cache type=”com.domain.something.MyCustomCache”>  <property name=”cacheFile” value=”/tmp/my-custom-cache.tmp”/></cache> 

?

?这会调用MyCustomCache的setCacheFile方法

?

在语句上设置缓存

?

<select ... flushCache=”false” useCache=”true”/> <insert ... flushCache=”true”/> <update ... flushCache=”true”/> <delete ... flushCache=”true”/> 
?

?

如果当前映射文件要使用别的映射文件中的缓存设置

?

<cache-ref namespace=”com.someone.application.data.SomeMapper”/> 
?

?

读书人网 >其他数据库

热点推荐