Mybatis3 缓存

来源:互联网 发布:怎么看是淘宝客推广的 编辑:程序博客网 时间:2024/06/06 16:53


Mybatis3 缓存

首先我列出Mybatis的配置文件:

[html] view plaincopyprint?
  1. <settings>  
  2.     <!-- 这个配置使全局的映射器启用或禁用缓存 -->  
  3.     <setting name="cacheEnabled" value="true"/>  
  4.     <!-- 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载 -->  
  5.     <setting name="lazyLoadingEnabled" value="true"/>  
  6.     <!-- 当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否则,每种属性将会按需要加载 -->  
  7.     <setting name="aggressiveLazyLoading" value="true"/>  
  8.     <!-- 允许或不允许多种结果集从一个单独的语句中返回(需要适合的驱动) -->  
  9.     <setting name="multipleResultSetsEnabled" value="true"/>  
  10.     <!-- 使用列标签代替列名。不同的驱动在这方便表现不同。参考驱动文档或充分测试两种方法来决定所使用的驱动 -->  
  11.     <setting name="useColumnLabel" value="true"/>  
  12.     <!-- 允许JDBC支持生成的键。需要适合的驱动。如果设置为true则这个设置强制生成的键被使用,尽管一些驱动拒绝兼容但仍然有效(比如Derby) -->  
  13.     <setting name="useGeneratedKeys" value="true"/>  
  14.     <!-- 指定MyBatis如何自动映射列到字段/属性。PARTIAL只会自动映射简单,没有嵌套的结果。FULL会自动映射任意复杂的结果(嵌套的或其他情况) -->  
  15.     <setting name="autoMappingBehavior" value="PARTIAL"/>  
  16.     <!-- 配置默认的执行器。SIMPLE执行器没有什么特别之处。REUSE执行器重用预处理语句。BATCH执行器重用语句和批量更新 -->  
  17.     <setting name="defaultExecutorType" value="SIMPLE"/>  
  18.     <!-- 设置超时时间,它决定驱动等待一个数据库响应的时间 -->  
  19.     <setting name="defaultStatementTimeout" value="25000"/>  
  20. </settings>  

然后是SQL映射文件的配置
[html] view plaincopyprint?
  1. <cache     
  2.     eviction="FIFO"     
  3.     flushInterval="60000"     
  4.     size="1024"     
  5.     readOnly="true"/>     
[html] view plaincopyprint?
  1. <select id="select" parameterType="string" resultType="integer" useCache=“false”>    
  2. select 1  
  3. </select>  


1. 所有在映射文件里的select 语句都将被缓存。
2. 所有在映射文件里insert,update 和delete 语句会清空缓存。
3. 缓存使用“最近很少使用”算法来回收
4. 缓存不会被设定的时间所清空。
5. 每个缓存可以存储1024 个列表或对象的引用(不管查询出来的结果是什么)。
6. 缓存将作为“读/写”缓存,意味着获取的对象不是共享的且对调用者是安全的。不会有其它的调用

可用的收回策略(eviction)有: 

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

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

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

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

默认的是 LRU

 

flushInterval(刷新间隔)可以被设置为任意的正整数,而且它们代表一个合理的毫秒形式的时间段默认情况是不设置也就是没有刷新间隔,缓存仅仅调用语句时刷新。 

size(引用数目)可以被设置为任意正整数,要记住你缓存的对象数目和你运行环境的可用内存资源数目。默认值1024。 

readOnly(只读)属性可以被设置为 true 或 false。只读的缓存会给所有调用者返回缓存对象的相同实例。因此这些对象不能被修改。这提供了很重要的性能优势。可读写的缓存会返回缓存对象的拷贝(通过序列化)。这会慢一些,但是安全,因此默认是false

0 0
原创粉丝点击