【发布时间】:2017-05-18 13:16:57
【问题描述】:
我有一个更新表的 jdbc 更新查询。并且在休眠中为同一张表维护实体缓存。我需要告诉 hibernate 刷新 jdbc 查询更新的实体的缓存区域。
【问题讨论】:
标签: java hibernate caching jdbc second-level-cache
我有一个更新表的 jdbc 更新查询。并且在休眠中为同一张表维护实体缓存。我需要告诉 hibernate 刷新 jdbc 查询更新的实体的缓存区域。
【问题讨论】:
标签: java hibernate caching jdbc second-level-cache
你在寻找
sessionFactory.getCache().evictEntityRegion(MyEntity.class)
这会从缓存中删除过时的条目。但是,如果您在 JDBC 更新之前这样做,在此失效和 JDBC 更新之间的窗口中,缓存可以通过并发读取再次填充,因此如果您的应用程序没有停止所有 DB 访问,您最终可能会得到一些陈旧的条目.
更新后的另一个区域驱逐可以解决它,但在 JDBC 查询和区域驱逐之间,您很容易再次出现缓存中的不一致数据。
【讨论】: