CacheStoreMode的javadocs在我无法真正把握的一点上有所区别:
USE模式的javadocs:

从数据库中读取数据以及何时将实体数据插入/更新到缓存中
提交到数据库:这是默认行为。不强迫
从数据库读取时刷新已缓存的项目。
REFRESH模式的javadocs在最后一句话中有所不同:

强制刷新从数据库读取的项目的缓存。

当从数据库读取数据时更新现有的缓存实体实例时,通常将涉及覆盖现有数据。那么在这种情况下强制与不强制刷新有什么区别?

谢谢。

最佳答案

我所知道的:

如果给定的EntityManagerFactory对基础数据库具有独占写访问权限,则应使用

  • CacheStoreMode.USE,因此这意味着存储在共享高速缓存中的实体实例不会过时。
  • 如果基础数据库可能被多个提交者(即EntityManagerFactory实例,不同JVM中的应用程序,外部JDBC源)访问,则应启用
  • CacheStoreMode.REFRESH,因此存储在共享缓存中的实体实例可能会过时。

  • 由于从数据库读取时,CacheStoreMode.USE不会强制刷新已缓存的实体,因此CacheStoreMode.REFRESH会刷新。

    08-26 01:30