我在Jax-RS(泽西岛)宁静的网络应用程序中使用mybatis。所以,我自动没有会话或州管理。
问题是如何使用mybatis的缓存功能?
答案 0 :(得分:3)
MyBatis中的缓存非常简单。根据文档(用户手册http://mybatis.googlecode.com/svn/trunk/doc/en/MyBatis-3-User-Guide.pdf第42页)
默认情况下,除了本地会话缓存之外,没有启用缓存,这可以提高性能并且是解决循环依赖关系所必需的。要启用第二级缓存,只需在SQL Mapping文件中添加一行: MyBatis 3 - 用户指南 2011年6月6日43
<cache/>
字面意思就是这样。
我这样做时常见的陷阱:
在映射器上,您将缓存元素添加到;如果您有依赖实体,请确保在需要时显式刷新缓存。即使已经为插入,更新,删除已经为您设置缓存元素的映射中的元素执行了刷新,有时您还必须刷新缓存,因为在不同的xml映射中定义了更新/删除/等。
基本上,当你考虑缓存时,你应该问自己,“当这个实体被更改时,我是否希望它为不同映射中的实体刷新缓存?”如果答案是肯定的,请使用cache-ref元素而不是缓存。
来自文档第45页的Ex:
<cache-ref namespace=”com.someone.application.data.SomeMapper”/>