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

在JBoss 4.2上使用JPA启用Hibernate二级缓存

须峰
2023-03-14
问题内容

使用Java Persistence
API(带注释的实体)时,启用Hibernate的二级缓存需要采取哪些步骤?我如何检查它是否正常工作?我正在使用JBoss4.2.2.GA。

从Hibernate文档中,我似乎需要启用缓存并在 persistence.xml中 指定一个缓存提供程序,例如:

<property name="hibernate.cache.use_second_level_cache"
          value="true" /> 
<property name="hibernate.cache.provider_class" 
          value="org.hibernate.cache.HashtableCacheProvider" />

还需要什么?我是否需要在JPA实体中添加 @Cache 注释?

如何判断缓存是否正常工作?我已尝试在运行查询后尝试访问缓存统计信息,但是
Statistics.getSecondLevelCacheStatistics 返回null,这可能是因为我不知道要使用什么“区域”名称。


问题答案:

我相信您需要添加缓存注释以告诉hibernate状态如何使用二级缓存(只读,读写等)。我的应用程序就是这种情况(使用spring
/传统的hibernate模式和ehcache,因此您的工作量可能会有所不同)。指示了缓存后,我开始从hibernate状态看到它们正在使用的消息。



 类似资料:
  • 我正在实现一个基于实体属性值的持久化机制。所有数据库访问都是通过Hibernate完成的。我有一个包含节点路径的表,它非常简单,只有一个id和一个路径(字符串)。路径数量很少,大约几千条。 主表有数百万行,我没有重复路径,而是将路径规范化为它们自己的表。以下是我在插入主表时想要的行为 1)检查路径表中是否存在路径(通过实体管理器查询,使用路径值作为参数) 2) 如果不存在,则插入并获取id(通过实

  • 我使用SpringBoot1.2.5和JPA2来注释实体(并将hibernate作为JPA实现的底层)。 我想在该设置中使用二级缓存,因此实体被注释为 我还在application.properties中添加了以下内容: 在启动过程中,hibernate抱怨缺少,因此我也将此添加到pom中: 但是像这样的查询仍在触发DB查询,而不是使用缓存数据。 你知道少了什么吗?

  • 我一个新的使用Hibernate缓存(一级,二级和查询缓存)。 我的项目是使用SpringMVC和JPA配置的。 我正在使用下面的JUnit测试用例测试一级缓存。 我的实体类定义为: 如果默认情况下启用了一级缓存,则应该执行一次本机查询。但我在执行此查询时得到以下结果: 以下是我的持久性相关配置: 有人能帮我解决一个问题或者我做错了什么吗? 提前感谢!

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

  • 我想澄清一些关于hibernate二级缓存的问题。需要澄清的一点是,HQL查询是否总是会击中数据库(至少对于获取id)。 假设我们有实体 地址的数据库表有一个对客户(id)的外键引用,以支持一对多关系。 作为前提条件,我已将hibernate的2级缓存启用为EHcache。只有实体和关联被设置为可缓存。未启用查询缓存。 我知道如果我使用这个会话。get()或会话。load()多次,只有第一次调用才

  • 让我澄清一下我对二级缓存的理解。在我的web应用程序的基类中有一个查询。几乎每一个操作都会调用此查询(我使用的是Struts,这就是应用程序的设计方式,因此不会真正弄乱它),例如,加载我的主页会调用三个单独的Struts操作,并为每个操作执行此查询。QueryDsl形式的查询看起来像