【发布时间】:2015-10-18 13:12:37
【问题描述】:
很抱歉提供了一个不太具体的标题。其实我是一团糟。
我的实际问题:提高应用程序的性能。
好事:数据通过 JPA 插入/更新到整个应用程序。
目前使用的技术:带有 JPA 2.0 和 hibernate 3.2 的 Spring 3.2 框架。
到目前为止,我们的代码中的任何地方都没有直接依赖 Hibernate。
回到问题:
我计划为一些总是获取相同数据(下拉值)的查询实现二级查询缓存。
我的第一个问题:JPA 本身是否提供二级缓存(不使用 EHcache 或任何此类依赖项)?
到目前为止我发现使用这个属性我们可以启用二级缓存
query.setHint("org.hibernate.cacheable", true);
我的第二个问题:我需要为 Ehcache 或 Hibernate-Ehcache 提供依赖就足够了吗?
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>4.0.0</version>
</dependency>
或者我是否也需要提供
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache-core</artifactId>
<version>${ehcacheVersion}</version>
</dependency>
我的第三个问题:我需要在我的 persistence.xml 中添加哪些属性。 我确信这两个属性:
<property name="hibernate.cache.use_query_cache" value="true"/>
<property name="hibernate.cache.use_second_level_cache" value="true"/>
=====感谢您的回答。此更新可能对开发人员有所帮助。====
我放下了启用 EHcache 需要定义的属性,因为很多人都面临这个异常
Caused by: org.hibernate.cache.NoCachingEnabledException: Second-level cache is not enabled for usage [hibernate.cache.use_second_level_cache | hibernate.cache.use_query_cache]
因为属性不匹配和依赖不匹配。
以下属性应该适用于 hibernate 4.x 和 Ehcache 2.4.3
<property name="hibernate.cache.use_second_level_cache" value="true"/>
<property name="hibernate.cache.use_query_cache" value="true"/>
<property name="hibernate.generate_statistics" value="true"/>
<property name="hibernate.cache.provider_configuration_file_resource_path" value="classpath:ehcache.xml" />
<property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory"/>
【问题讨论】:
-
感谢更新