CacheStoreMode的javadocs在我无法真正把握的一点上有所区别:USE
模式的javadocs:
从数据库中读取数据以及何时将实体数据插入/更新到缓存中
提交到数据库:这是默认行为。不强迫
从数据库读取时刷新已缓存的项目。REFRESH
模式的javadocs在最后一句话中有所不同:
强制刷新从数据库读取的项目的缓存。
当从数据库读取数据时更新现有的缓存实体实例时,通常将涉及覆盖现有数据。那么在这种情况下强制与不强制刷新有什么区别?
谢谢。
最佳答案
我所知道的:
如果给定的EntityManagerFactory对基础数据库具有独占写访问权限,则应使用
CacheStoreMode.USE
,因此这意味着存储在共享高速缓存中的实体实例不会过时。 CacheStoreMode.REFRESH
,因此存储在共享缓存中的实体实例可能会过时。 由于从数据库读取时,CacheStoreMode.USE不会强制刷新已缓存的实体,因此CacheStoreMode.REFRESH会刷新。