2011-09-27 106 views

回答

3

MyBatis中的缓存非常简单。每文档

默认情况下(用户手册http://mybatis.googlecode.com/svn/trunk/doc/en/MyBatis-3-User-Guide.pdf的第42页),也没有启用缓存的,除了局部的session缓存,从而提高性能和需要解决循环依赖。要启用缓存的第二个层次,你只需要一个行添加到您的SQL映射文件: 的MyBatis 3 - 用户指南 2011年6月6日43

<cache/> 

字面上看就是这样。

常见的陷阱,我有,而这样做:

在您添加缓存元素映射器;如果您有依赖实体,请确保在需要时显式清空缓存。尽管在插入,更新和删除已设置缓存元素的映射中的元素时已经为您执行了刷新,但由于在不同的xml映射中定义了更新/删除/ etc,有时您必须刷新缓存。基本上,当你考虑你的缓存时,你应该问自己:“当这个实体改变时,我是否希望它为另一个映射中的实体刷新缓存?”如果答案是肯定的,请使用cache-ref元素而不仅仅是缓存。

防爆从文档的第45页:

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

是的,但是这是一个无状态的web服务,而不是一个MVC应用程序。我没有会话。 – aks

+1

MyBatis中的缓存全部在内部完成;不管您决定投入什么样的环境。所以只要您遵循“范围和生命周期”部分(第10页)中的指导原则,就无需担心;缓存应该可以正常工作。所以使用SqlSessionFactoryBuilder来创建一个SqlSessionFactory。确保你的SqlSessionFactory实例是一个单例,并用它为每个请求创建一个新的SqlSession。 – Dave