当前位置: 首页 > 面试题库 >

Hibernate缓存策略

慕飞章
2023-03-14
问题内容

我该如何决定CacheConcurrencyStrategy使用哪个?

  • NonstrictReadWriteCache
  • ReadOnlyCache
  • ReadWriteCache
  • TransactionalCache

我阅读了https://www.hibernate.org/hib_docs/v3/api/org/hibernate/cache/CacheConcurrencyStrategy.html,但没有足够详细地解释。


问题答案:

在Hibernate文档确实在他们定义了很好的工作:

19.2.2。策略:只读

如果您的应用程序需要读取而不是修改持久类的实例,则可以使用只读缓存。这是最简单和最佳的执行策略。在群集中使用它甚至是安全的。

19.2.3。策略:读/写

如果应用程序需要更新数据,则可以使用读写缓存。如果需要可序列化的事务隔离级别,则永远不要使用此缓存策略。如果在JTA环境中使用了高速缓存,则必须指定属性
hibernate.transaction.manager_lookup_class
并命名用于获取JTA的策略TransactionManager。在其他环境中,应确保在调用Session.close()或 时完成事务
Session.disconnect()。如果要在群集中使用此策略,则应确保基础缓存实现支持锁定。内置缓存提供程序不支持锁定。


19.2.4。策略:非严格读/写

如果应用程序仅偶尔需要更新数据(即,如果两个事务很难同时尝试更新同一项目),并且不需要严格的事务隔离,则非严格读写缓存可能是合适的。如果在JTA环境中使用了缓存,则必须指定
hibernate.transaction.manager_lookup_class。在其他环境中,应确保在调用Session.close()
时完成事务Session.disconnect()

19.2.5。策略:事务性

事务缓存策略为完全事务缓存提供程序(例如JBoss TreeCache)提供支持。这样的缓存只能在JTA环境中使用,必须指定
hibernate.transaction.manager_lookup_class

换一种说法:

  • 只读:经常读取但从未更新的 数据很有用(例如,参考数据,如“国家”)。很简单。它拥有所有最佳性能(显然)。

  • 读/写: 如果您的数据需要 更新,则是 理想的。但是它不提供SERIALIZABLE隔离级别,可能会发生幻像读取(您可能会在事务结束时看到开始时不存在的某些内容)。它具有比只读更多的开销。

  • 非严格读/写: 或者,如果不太可能两个独立的事务线程可以更新同一对象,则可以使用非严格读/写策略。它比读写具有更少的开销。这对于 很少更新的 数据很有用。

  • 事务性: 如果您需要 完全事务性 缓存。仅适用于JTA环境。

因此,选择正确的策略取决于是否要更新数据,更新的频率和所需的隔离级别。如果您不知道如何回答要放入高速缓存中的数据的问题,请向DBA寻求支持。



 类似资料:
  • 问题内容: 我该如何决定使用哪个? , , , 。 我阅读了https://www.hibernate.org/hib_docs/v3/api/org/hibernate/cache/CacheConcurrencyStrategy.html,但没有足够详细地解释。 问题答案: 在Hibernate文档确实在他们定义了很好的工作: 19.2.2。策略:只读 如果您的应用程序需要读取而不是修改持久类

  • 问题内容: 我正在寻找一个简单,完整,简明的缓存列表,您将在使用Hibernate编码JPA时运行该缓存。 特别是,我想了解每个缓存的生命周期(缓存何时失效),缓存的范围,清除缓存的方式(如果有),缓存的内容(如果缓存是)。默认情况下处于打开状态,如何打开/关闭它以及任何有用的信息。 我试图在另一个问题中找到此信息,但找不到任何完整的答案。答案也遍布Hibernate文档,但是我也很难在那找到它们

  • 问题内容: 我想在hibernate项目中使用二级缓存,但是我只对hibernate二级缓存了解一点,任何人都可以解释我应该如何在代码中使用它以及需要什么配置和.jar文件吗?我将这些设置设置为我的hibernate.cfg.xml文件 并添加这些jar文件, 我想知道我是否需要更改其他配置? 我怎么知道我的项目使用二级缓存? 如果只是设置此设置,hibernate将自动使用此设置,否则我必须在我

  • 主要内容:缓存,Hibernate 一级缓存,快照区Hibernate 是一款全自动 ORM 框架,它会在应用程序访问数据时,自动生成 SQL 语句并执行,因此开发人员不需要自己编写 SQL 语句,但这也造成它无法像 MyBatis 一样,能够直接从 SQL 层面严格控制其执行性能以及对数据库的访问频率,所以很容易出现性能不佳的情况。 为此,Hibernate 提供了多种性能优化手段(例如 HQL、懒加载策略、抓取策略以及缓存机制),其中缓存机制是

  • Employee.java

  • 本文向大家介绍Android图片三级缓存策略(网络、本地、内存缓存),包括了Android图片三级缓存策略(网络、本地、内存缓存)的使用技巧和注意事项,需要的朋友参考一下 一、简介 现在的Android应用程序中,不可避免的都会使用到图片,如果每次加载图片的时候都要从网络重新拉取,这样不但很耗费用户的流量,而且图片加载的也会很慢,用户体验很不好。所以一个应用的图片缓存策略是很重要的。通常情况下,A