gpt4 book ai didi

java - 将 EhCache 从 native 实现更新为 Hibernate 实现

转载 作者:行者123 更新时间:2023-11-30 08:28:08 25 4
gpt4 key购买 nike

我的项目使用 Spring 3.x、Hibernate 4.2.7、JPA 和 Maven。它是从 3.x Hibernate 版本迁移而来的。之前,该项目使用以下包:

<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>2.3.1</version>
</dependency>

我发现 Hibernate 有自己的 EhCache 实现,所以我更新了我的包配置,如下所示:

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.2.7.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.2.7.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>4.2.7.Final</version>
</dependency>

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>4.2.7.Final</version>
</dependency>

工作正常,但现在我遇到了一个问题:如何指定我的 ehcache.xml 先前的声明?我的实际 persistence.xml 如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">

<persistence-unit name="consultlog">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
<property name="hibernate.hbm2ddl.auto" value="validate" />
<property name="hibernate.show_sql" value="false" />
<property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory" />
<property name="net.sf.ehcache.configurationResourceName">/ehcache.xml</property>
<property name="hibernate.cache.use_second_level_cache" value="true" />
<property name="hibernate.cache.use_query_cache" value="true" />
<property name="default_batch_fetch_size" value="5" />
<property name="hibernate.connection.driver_class" value="org.postgresql.Driver" />
<property name="hibernate.connection.url" value="jdbc:postgresql://localhost/mydatabase" />
<property name="hibernate.connection.username" value="myuser" />
<property name="hibernate.connection.password" value="mypassword" />

<property name="hibernate.connection.provider_class"
value="org.hibernate.connection.C3P0ConnectionProvider" />

<property name="hibernate.c3p0.max_size" value="80" />
<property name="hibernate.c3p0.min_size" value="0" />
<property name="hibernate.c3p0.acquire_increment" value="1" />
<property name="hibernate.c3p0.idle_test_period" value="300" />
<property name="hibernate.c3p0.max_statements" value="0" />
<property name="hibernate.c3p0.timeout" value="100" />
</properties>
</persistence-unit>

我该如何替换这条线?

<property name="net.sf.ehcache.configurationResourceName">/ehcache.xml</property>

或者更好的是,我如何使用 persistence.xml 来执行配置?

最佳答案

查看源码中负责加载ehcache.xmlSingletonEhCacheRegionFactoryAbstractEhcacheRegionFactory,属性名还是称为 net.sf.ehcache.configurationResourceName(我正在查看 hibernate-ehcache 的 4.3 版)。

此外,如果文件名为 ehcache.xml 并且位于类路径的根目录中,则无需指定该属性,因为默认情况下将加载该文件名。如果您想要一个不同的名称 - 例如 ehcache-2.xml - 或者文件不在类路径的根目录中,您只需要指定属性。

我认为您应该安全地保留您的属性(property)原样 - 或者如果您的 ehcache.xml 位于类路径的根目录中(看起来似乎是这样做的),则可能完全删除它在您的配置中)。

关于java - 将 EhCache 从 native 实现更新为 Hibernate 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20386497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com