iBatis高速缓存应用培训.pptx

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
iBatis高速缓存应用2011什么是缓存?缓存其实就是将常用的数据暂存于内存缓存区中的一种技术。一个WEB应用程序中,缓存可以应用在:表现层服务层数据访问层iBATIS的高速缓存只关注于数据访问层。iBATIS的高速缓存一个简单的iBATIS高速缓存示例高速缓存模型cacheMode高速缓存的配置是通过cacheMode标签来定义的,标签属性如下:id该值用于指定一个唯一的IDtype此属性用于指定高速缓存模型所配置的高速缓存的类型。其有效值包括MEMORY,FIFO,LRU,OSCACHEreadOnly将该值设置为true,就表示高速缓存将仅仅被用作只读高速缓存。从只读高速缓存中读出的对象值是不允许更改的。serialize该属性用于指定在读取高速缓存内容时是否要进行“深复制”。 “深复制”是指被返回的是一个深度复制的副本,只具有相同的值,但不是同一个实例。高速缓存模型类型 type属性iBATIS提供了4个高速缓存实现,这4个就是type属性的有效值:MEMORY这个模型简单地将高速缓存数据保存在内存中,直至垃圾收集器将它移除FIFO这个模型中,高速缓存的数据量是固定的,使用“先进先出”算法来移除高速缓存中的数据。LRU这个模型中,高速缓存的数据量是固定的,使用“最近最少使用”算法来移除高速缓存中的数据。OSCACHE这个模型使用OpenSymphony公会的产品---OSCache2.0组合使用readOnly和serializereadOnly和serialize两个属性有一些重叠,但需要紧密协同才能正常工作:readOnlyserialize结果原因truefalse好可以最快速地检索出已高速缓存对象。返回已高速缓存对象的一个共享实例。falsetrue好能快速检索出已速度缓存对象,返回已高速缓存对象的一个深副本falsefalse警告这种组合,返回同一个共享实例,又不是只读的, 会造成线程安全问题。truetrue坏这种组合同readOnly=false而serialize=true的组合作用一致,否则它的语义上没有任何意义。高速缓存的清除高速缓存的清除,可以使用下面两个标签:标签名称用途flushOnExecute定义查询已映射的语句,其执行将引起相关高速缓存的清除。 statement属性指定一个映射语句。flushInterval定义一个时间间隔,高速缓存将以此间隔定期清除。hours:小时minutes:分钟seconds:秒milliseconds: 毫秒MEMORY模型MEMORY是内存缓存,是一种基于引用的高速缓存。 提供了三种引用类型:WEAKWEAK引用类型将很快地废弃已高速缓存的对象。这种引用类型在垃圾收集器的第一遍收集中就会被移除。SOFTSOFT引用类型在满足内在约束的前提下,将尽可能地保留已高速缓存的对象,垃圾收集器始终不会收集对象,除非确定需要更多的内存,SOFT将确保不会超过内存限制。STRONGSTRONG引用类型不管内存约束,其中已高速缓存对象永远不会被废弃,除非到达了指定的清除时间间隔。FIFO模型FIFO是采用先进先出的管理策略,当高速缓存超过大小限制时,才会废弃缓存中最老的对象。LRU模型LRU是采用最近最少使用的管理策略,该高速缓存的内部机制会在后台记录哪些对象最近最少被访问,一旦超过高速缓存大小限制就会废弃他们。OSCACHE模型OSCACHE高速缓存模型采用OpenSymphony公会的产品---OSCache2.0。OSCache是一个非常健壮的高速缓存框架,它可以提供很多同iBATIS在其缓存模型中所提供的一致的策略。要使用OSCache就需要引用OSCache JAR和oscache.properties文件。自己的高速缓存模型高速缓存模型实际上是框架的可插入组件,要定义自己的高速缓存,只需要记住两点:iBATIS所提供的4种类型的高速缓存模型实际上都是com.ibatis.sqlmap.engine.cache.CacheController接口的具体实现。它们的名称实际上只是映射到这些实现的全限定名的别名。Thank you !

文档评论(0)

70后老哥 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档