Java

本类阅读TOP10

·使用MyEclipse开发Struts框架的Hello World!(录像1)
·hibernate配置笔记
·AOP编程入门--Java篇
·linux下Tomcat 5.0.20 与 Apache 2 安装/集成/配置
·在win2003下整合了整合Tomcat5.5+ apache_2.0.53+ mod_jk_2.0.47.dll
·构建Linux下IDE环境--Eclipse篇
·Jsp 连接 mySQL、Oracle 数据库备忘(Windows平台)
·ASP、JSP、PHP 三种技术比较
·Tomcat5.5.9的安装配置
·AWT GUI 设计笔记(二)

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
补充关于iBatis的缓存使用

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

  在你的xml配置文件中,每一个 cacheModel 元素,如下
  <cacheModel id="oneday_cache" type="LRU" readOnly="false" serialize="true">
      <flushInterval hours="24"/>
      <flushOnExecute statement="updateMyDate"/>
      <property name="size" value="200"/>
   </cacheModel> 
 1 属性readOnly如果不写,默认是true,这时的缓存效果无疑最好,因为系统不需要考虑更新操作引起缓存与实际数据不一致的问题,只读缓存的例子是固化到数据库中的一些配置参数表。但是,通常我们想缓存的数据是需要增删改的,这时务必记得要加上     readOnly = "false";
 2 属性serialize,如果不写,默认为false, 将它设为true,可以提高整体应用(而不仅仅是每个Session)的性能。 这种缓存为每一个Session返回缓存对象不同的实例(复本)。因此每一个Session都可以安全修改返回的对象.   注意,此时readOnly必须为false。
     如果你把它设为 true ,记得检查两件事,一件事是缓存中存放的对象(你想查询的POJO)必须是可序列化的, 即实现Serializable接口。如果你有一个复杂对象属性,它也必须满足这个规则,你的整个对象树必须是可序列化的。
     另一件事是关闭sql-map-config中的延迟加载属性,即lazyload=false,原因是,它使用了动态代理机制, 那个代理对象并不是Serializable的。
  
   缓存类型的最佳适应情形:


   MEMORY    没有统一的对象重用模式的应用,或内存不足的应用。
   LRU       在较长的期间内,用户经常使用某些特定对象。
   FIFO      用户在短时间内持续引用特定的查询,而后很可能不再使用。
  
   根据个人实践,内存充足时使用LRU,否则使用MEMORY(WEAK)通常能获得较好的效果。




相关文章

相关软件