【问题标题】:Disabling Hibernate Second level cache Read Or Update for specific query为特定查询禁用休眠二级缓存读取或更新
【发布时间】:2018-09-16 23:27:47
【问题描述】:
我将 Redis 作为 Hibernate 的二级缓存。我根据实体 ID 为实体启用了缓存。但是,我几乎没有需要根据姓名、年龄等其他属性运行的查询……在这种情况下,我当前的实现仍在访问缓存、丢失缓存、如果有任何更改则更新实体。由于它是基于 ID 的缓存,因此它缺少它。如果没有用 ID 请求它,我想忽略去缓存。有什么办法呢?
如果您需要任何其他信息,请告诉我。
【问题讨论】:
标签:
hibernate
redis
second-level-cache
【解决方案2】:
二级缓存有两种类型:
- 缓存实体(按 id,或缓存自然 id -> id 映射)和集合
- 查询缓存
您似乎一直在考虑当您执行session.load(MyEntity.class, id) 时发生的第一个问题。当您执行另一种类型的查询(例如SELECT * FROM MyEntity WHERE age > 18)时,您可以使用查询缓存,通过设置hibernate.cache.use_query_cache=true 并使用提示org.hibernate.cacheable 标记查询来启用查询字符串缓存结果。