【发布时间】:2019-08-24 08:17:29
【问题描述】:
在我的情况下,清除整个查询缓存非常昂贵,所以我想只清除特定的查询缓存。
假设我执行了以下 hql 查询:
SELECT FROM Car c WHERE c.id = 22
下一次,我想强制休眠从数据库中获取结果,而不是获取查询缓存中的内容。
观察:关闭查询缓存或清除整个缓存都不是有效选项。我不能在性能上妥协。
【问题讨论】:
标签: java hibernate jpa caching
在我的情况下,清除整个查询缓存非常昂贵,所以我想只清除特定的查询缓存。
假设我执行了以下 hql 查询:
SELECT FROM Car c WHERE c.id = 22
下一次,我想强制休眠从数据库中获取结果,而不是获取查询缓存中的内容。
观察:关闭查询缓存或清除整个缓存都不是有效选项。我不能在性能上妥协。
【问题讨论】:
标签: java hibernate jpa caching
使用hibernateQuery.setCacheMode(CacheMode.REFRESH) 禁用查询缓存。
程序化失效:
创建查询时设置区域名称hibernateQuery.setCacheRegion("car22"),然后使其无效session.getSessionFactory().getCache().evictQueryRegion("car22");
【讨论】: