在 Restful Web 服务中进行 ibatis / mybatis 缓存
我在 Jax-RS(泽西岛)restful web 应用程序中使用 mybatis。因此,我自动没有会话或状态管理。
问题是如何使用mybatis的缓存功能?
I am using mybatis within a Jax-RS (Jersey) restful web app. So automatically, I dont have a session or state management.
Question is how can I use the caching features of mybatis ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
MyBatis 中的缓存非常简单。根据文档(用户手册第 42 页 http ://mybatis.googlecode.com/svn/trunk/doc/en/MyBatis-3-User-Guide.pdf)
我在执行此操作时遇到的常见陷阱:
在映射器上添加缓存元素;如果您有依赖实体,请确保在需要时显式刷新缓存。即使您已设置缓存元素的映射中的元素的插入、更新、删除操作已完成刷新,但有时由于不同 xml 映射中定义的更新/删除等,您必须刷新缓存。
基本上,当您考虑缓存时,您应该问自己:“当此实体更改时,我是否希望它刷新不同映射中实体的缓存?”如果答案是肯定的,请使用cache-ref 元素,而不仅仅是缓存。
例如文档第 45 页:
Caching in MyBatis is very straight forward. Per the documentation (pg 42 of the user manual http://mybatis.googlecode.com/svn/trunk/doc/en/MyBatis-3-User-Guide.pdf)
The common pitfalls I had while doing this:
On the mapper you add the cache element to; if you have dependent entities, make sure to explicitly flush the cache when required. Even though flushing is already done for you on insert, update, delete for the elements in the mappings you have set the cache element, sometimes you have to flush a cache due to updates/deletes/etc defined in different xml mappings.
Basically, when you're thinking about your caching, you should ask yourself, "When this entity is changed, do I want it to flush a cache for an entity in a different mapping?" If the answer is yes, use cache-ref element as opposed to just cache.
Ex from page 45 of the doc: