3

我有一个运行 Hibernate 4.1.7 的应用程序,并且正在使用 ehcache 作为 2 级缓存。我知道从 Hibernate 4 开始,我需要使用与 hibernate 捆绑在一起的 ehcache jar,但是这些 jar 已经很旧了。

目前ehcache最新版本是2.6.3,但是hibernate 4.1.7自带的版本是2.4.3。问题是 hibernate 没有与 ehcache-terracotta jar 捆绑在一起,而我的 terracotta 服务器与 ehcache-hibernate 2.6.2 jar 捆绑在一起,因为它是 terracotta 的最新工作版本。我正在努力让我的应用程序连接到我的兵马俑服务器并假设这是因为我的版本不匹配。

如何让 hibernate(2.4.3 版)使用的 ehcache 与我的 ehcache 2.6.2 版的 terracotta 服务器连接?

请帮忙

4

1 回答 1

1

如果您使用 Hibernate JPA 实现,您应该在您的 persistence.xml 中提供以下属性:

<property name="hibernate.cache.region.factory_class" value="net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory" />

然后你的类路径中应该有以下 jars(对于 terracotta 版本 3.6.5 - 与 JDK5 兼容的最后一个版本):

  • ehcache-core-ee-2.5.6.jar
  • ehcache-terracotta-ee-2.5.6.jar
  • terracotta-toolkit-1.5-runtime-ee-4.5.0.jar

此外,您必须确保您的类路径中没有任何其他 ehcache jar。

如果你使用 Maven,那么:

<dependency>
    <groupId>net.sf.ehcache</groupId>
    <artifactId>ehcache-core-ee</artifactId>
    <version>2.5.6</version>
</dependency>
<dependency>
    <groupId>net.sf.ehcache</groupId>
    <artifactId>ehcache-terracotta-ee</artifactId>
    <version>2.5.6</version>
</dependency>
<dependency>
    <groupId>org.terracotta</groupId>
    <artifactId>terracotta-toolkit-1.5-runtime-ee</artifactId>
    <version>4.5.0</version>
</dependency>

另外不要忘记指向 terracotta 的 maven 存储库以下载所需的 jar:

<repository>
    <id>terracotta-repository</id>
    <url>http://www.terracotta.org/download/reflector/releases</url>
    <releases>
        <enabled>true</enabled>
    </releases>
</repository>
于 2013-03-29T13:12:51.313 回答