在 Restful Web 服务中进行 ibatis / mybatis 缓存

发布于 2024-12-06 15:33:04 字数 94 浏览 0 评论 0原文

我在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

感悟人生的甜 2024-12-13 15:33:04

MyBatis 中的缓存非常简单。根据文档(用户手册第 42 页 http ://mybatis.googlecode.com/svn/trunk/doc/en/MyBatis-3-User-Guide.pdf

默认情况下,除了本地会话缓存之外,不启用任何缓存,这可以提高性能并且需要解决循环依赖关系。要启用第二级缓存,您只需在 SQL 映射文件中添加一行:
MyBatis 3 - 用户指南
2011 年 6 月 6 日 43

<cache/>

从字面上看就是这样。

我在执行此操作时遇到的常见陷阱:

在映射器上添加缓存元素;如果您有依赖实体,请确保在需要时显式刷新缓存。即使您已设置缓存元素的映射中的元素的插入、更新、删除操作已完成刷新,但有时由于不同 xml 映射中定义的更新/删除等,您必须刷新缓存。

基本上,当您考虑缓存时,您应该问自己:“当此实体更改时,我是否希望它刷新不同映射中实体的缓存?”如果答案是肯定的,请使用cache-ref 元素,而不仅仅是缓存。

例如文档第 45 页:

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

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)

By default, there is no caching enabled, except for local session caching, which improves performance and is required to resolve circular dependencies. To enable a second level of caching, you simply need to add one line to your SQL Mapping file:
MyBatis 3 - User Guide
6 June 2011 43

<cache/>

Literally that’s it.

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:

<cache-ref namespace=”com.someone.application.data.SomeMapper”/>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文