我有一个 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/