为特定查询禁用Hibernate二级缓存读取或更新
我有Redis作为Hibernate的二级缓存。我根据实体的ID启用了缓存。但是,我需要根据其他属性(如名称、年龄等)运行的查询很少。。。在这种情况下,我当前的实现仍然会命中缓存,丢失缓存,如果有任何更改,就会更新实体。因为它是基于ID进行缓存的,所以它缺少ID。如果没有ID请求缓存,我想忽略它。该怎么做 如果您需要任何其他信息,请告诉我。您可以使用为特定查询禁用Hibernate二级缓存读取或更新,hibernate,redis,second-level-cache,Hibernate,Redis,Second Level Cache,我有Redis作为Hibernate的二级缓存。我根据实体的ID启用了缓存。但是,我需要根据其他属性(如名称、年龄等)运行的查询很少。。。在这种情况下,我当前的实现仍然会命中缓存,丢失缓存,如果有任何更改,就会更新实体。因为它是基于ID进行缓存的,所以它缺少ID。如果没有ID请求缓存,我想忽略它。该怎么做 如果您需要任何其他信息,请告诉我。您可以使用Session.setCacheMode(CacheMode)进行设置 这将忽略从数据库读取数据的二级缓存 您可以使用Session.setCach
Session.setCacheMode(CacheMode)
进行设置
这将忽略从数据库读取数据的二级缓存 您可以使用Session.setCacheMode(CacheMode)
进行设置
这将忽略从数据库读取数据的二级缓存 有两种类型的二级缓存:
似乎您一直在考虑在执行
session.load(MyEntity.class,id)
时发生的第一个问题。当您执行另一种类型的查询时(例如,SELECT*FROM MyEntity WHERE age>18
),您可以使用查询缓存,通过设置hibernate.cache.use\u query\u cache=true
并使用提示标记查询以通过查询字符串缓存结果来启用。有两种类型的二级缓存:
session.load(MyEntity.class,id)
时发生的第一个问题。当您执行另一种类型的查询(例如,SELECT*FROM MyEntity WHERE age>18
)时,您可以使用查询缓存,通过设置hibernate.cache.use\query\u cache=true
并使用提示org.hibernate.cacheable
标记查询,通过查询字符串缓存结果