【问题标题】:How to use/not-use cache on a per-request basis?如何在每个请求的基础上使用/不使用缓存?
【发布时间】:2012-04-21 09:04:09
【问题描述】:

我有一个以非常标准的方式设置的 Hibernate + Ehcache + Spring MVC webapp:

控制器 -> 服务类 -> DAO 类 -> DB

该应用程序是一个 REST API,它使用 XML 响应 HTTP GET 请求。一切都按预期工作。数据库仅在需要时才被命中——否则结果来自 Ehcache。

我想要的是在每个请求的基础上使用/不使用缓存。当然,我希望默认行为是使用缓存,但是当传入“nocache=1”参数时,不应使用缓存,而应读取数据库。

我开始着手将“useCache”参数添加到我的服务类方法,然后添加到 DAO 类,但感觉不对。有没有更好/更好的方法来做到这一点?也许使用某种 servlet 过滤器?

【问题讨论】:

  • +1,你如何配置你的缓存?休眠? @Cacheable?
  • 我用 @Cache(usage=...) 注释了我的 POJO 类。我还在我的 ehcache.xml 文件中指定了缓存名称。 `

标签: java spring hibernate spring-mvc ehcache


【解决方案1】:

这是一个想法,但不确定是否合适。

写两种方法,一种是query.setCacheable(true);,另一种是普通的。现在,您何时可以根据需要使用这些方法,即何时需要缓存以及何时不需要。

这里是article,它谈到了查询缓存。

【讨论】:

  • 这(几乎)正是我开始下降的路线,但不喜欢缓存内容污染我的代码的方式。我觉得我的服务类中的业务方法不应该“知道”缓存,所以我停止了。仍然想知道是否有 AOP 或过滤方式来实现我想要的......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-28
  • 2010-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多