Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate中的只读与非严格读写缓存并发_Java_Hibernate_Jpa_Second Level Cache - Fatal编程技术网

Java Hibernate中的只读与非严格读写缓存并发

Java Hibernate中的只读与非严格读写缓存并发,java,hibernate,jpa,second-level-cache,Java,Hibernate,Jpa,Second Level Cache,我是Hibernate的初学者,在JPA二级缓存并发策略中遇到了以下概念: Read-Only: Used when the cache is never updated. Data like names of countries etc are suitable candidate Non-Strict Read-Write: Data that is rarely updated. 我不清楚这两者之间到底有什么区别。您使用只读来查询一次缓存条目,通常是在应用程序启动期间或第一次请求时查询

我是Hibernate的初学者,在JPA二级缓存并发策略中遇到了以下概念:

Read-Only: Used when the cache is never updated. Data like names of countries etc are suitable candidate

Non-Strict Read-Write: Data that is rarely updated.

我不清楚这两者之间到底有什么区别。

您使用
只读
来查询一次缓存条目,通常是在应用程序启动期间或第一次请求时查询,并且可以确定加载的结果在应用程序的生存期内不会更改。就像在描述中一样,国家列表就是一个很好的例子

对于
非严格读写
,当对缓存结果的更新可能偶尔更改时,可以使用此选项

例如,一家商店每周的营业日。一般来说,这不会改变,但由于某些翻新,下周日可能会关闭,这将导致缓存更新

这将对持久性提供程序强制执行额外的检查和同步,因此其性能不是最高的(如在
只读中)


您需要判断是否尽可能使用
只读
,并在字典发生罕见更改时重新启动服务器,或者执行
非严格读写
,处理稍慢的性能,但不需要不时重新启动服务器。

这与频率本身;这是关于缓存实现可以做的优化。当级别设置为
只读时
引擎知道您的应用程序不会更新实体/集合,并可以避免一些锁定等。未详细定义
非严格读写
级别,但它允许实现执行另一种优化,可能会降低一致性。在常规的
读写
模式下,缓存尝试与数据库保持完全同步;在
非严格
模式下,当缓存将提供过时数据(不再在DB中的数据)时,它可以打开一个简短的窗口。好处可能是性能的提高

如果您的更新不频繁,则出错的可能性很低(例如,对实体的更新将发生冲突),这就是为什么您可以决定冒这样的风险