【问题标题】:Hibernate + Ehcache updating doesn't straight refresh a cacheHibernate + Ehcache 更新不会直接刷新缓存
【发布时间】:2016-12-31 17:47:06
【问题描述】:
我使用 NONSTRICT_READ_WRITE 策略在我的实体上使用 Hibernate 注释。更新或保存后如何将对象直接放入缓存?就我而言,Hibernate 在更新或保存操作后从数据库加载数据。伪代码:
loadUser(); //from DB
loadUser(); //from cache
updateUser(); //updating
loadUser(); //from DB instead of cache
【问题讨论】:
标签:
hibernate
caching
ehcache
【解决方案1】:
Hibernate 不会尝试通过修改来使缓存内容保持最新。它总是驱逐条目,以便后续查询必须转到数据库并用新条目填充缓存。所以你的要求是不可能的。
这是设计使然,因为 Hibernate 不能保证它在内存中看到的所有突变都是您的更新导致的完整突变集。想想拥有(我知道很奇怪)一个数据库触发器,它会根据对特定列的更新导致对另一列的更新。