java - 如何根据每个请求使用/不使用缓存?

标签 java spring hibernate spring-mvc ehcache

我有一个 Hibernate + Ehcache + Spring MVC Web 应用程序,它以非常标准的方式设置:

Controller -> 服务类 -> DAO 类 -> DB

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

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

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

最佳答案

这是一个想法,但我不确定它是否正确。

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

这里是article其中谈到了查询缓存。

关于java - 如何根据每个请求使用/不使用缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10065616/

相关文章:

Java反序列化实例变量发生变化

java - 从 MySQL 归档 Jframe

java - 有没有一种方法可以在 Hibernate 中加载对象而无需编写查询或具有 ID?

hibernate - Grails 2.3和Hibernate4:唯一约束名称冲突

java - JPA 默认获取类型

java - 我的程序做错了什么?

java - 使用 ExecutorService 观察 Future<T> 对象的完成情况

java - 将 pdf 作为在 docker 容器中运行的 spring 应用程序的静态资源

java - 不同的 Spring 配置文件适用于不同的构建

java - MySQL : EOFException: Can not read response from server. 预计读取 4 个字节,在连接意外丢失之前读取了 0 个字节