2012-08-06 19 views
5

Ich habe andere Themen hier zu diesem Thema gelesen, aber keine der Lösungen funktioniert für mich.Wie konfiguriert man den Second-Level-Cache in Hibernate 4.1.5 SP1?

Ich habe versucht, dies in meinem hibernate.cfg.xml setzen:

<property name="hibernate.cache.region.factory_class">org.hibernate.cache.spi.EntityRegion</property> 

ich diesen Fehler immer erhalten: konnte nicht instanziiert RegionFactory [org.hibernate.cache.spi.EntityRegion]

Ich habe auch die meisten Vorschläge aus Threads auf Hibernate-Websites ausprobiert, aber kein Glück.

Also, wie konfiguriere ich das?

Antwort

11

Nun, fand ich die Antwort (von Youtube Benutzer):

To get it working:

1) I use hibernate-release-4.1.0.Final or later versions. So I've added jars from its lib\optional\ehcache directory

2) My hibernate.cfg.xml contains:

<property name="cache.region.factory_cla­ss">org.hibernate.cache.ehcache.Si­ngletonEhCacheRegionFactory</property> 

3) Finally I had to add slf4j-api-1.6.1.jar (I found it in ehcache-2.5.1-distribution.tar­.gz downloaded from ehcache.org in addition) because of ClassNotFoundException.

Auch wenn Sie dies nicht bereits getan haben, fügen Sie diese zu Ihrer hibernate.cfg.xml:

<!-- Enable Hibernate's automatic session context management --> 
<property name="cache.use_second_level_cache">true</property> 

Der Hauptpunkt hier war das Hinzufügen des ehcache jar aus dem optionalen Verzeichnis \ in Hibernate4.

2

Fügen Sie die folgenden Eigenschaften in den Hibernate Eigenschaften:

<prop key="hibernate.cache.use_second_level_cache">true</prop> 
<prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop> 
<prop key="hibernate.cache.provider_configuration_file_resource_path">hibernate-ehcache.xml</prop> 
<prop key="hibernate.cache.use_query_cache">true</prop> 
<prop key="hibernate.generate_statistics">true</prop> 
<prop key="hibernate.cache.use_structured_entries">true</prop> 

Sie müssen hibernate- ehcache 4.1.1 jar oder nicht ehcache Glas.

Bitte notieren Sie sich die Cache-Provider-Klasse, die sich geändert hat.

1

Hoffe, es kann von jemandem von Nutzen sein (Hibernate 4.x).

Der Auszug aus meiner Federkonfiguration:

public Properties hibernateProperties() { 
    Properties properties = new Properties(); 
    properties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto")); 
    properties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect")); 
    properties.setProperty("hibernate.format_sql", "true"); 
    properties.setProperty("hibernate.generate_statistics", env.getProperty("hibernate.generate_statistics")); 
    // second-level cache: 
    properties.setProperty("hibernate.cache.use_second_level_cache", "true");   
    properties.setProperty("hibernate.cache.region.factory_class", "org.hibernate.cache.EhCacheRegionFactory"); 
    properties.setProperty("net.sf.ehcache.configurationResourceName", env.getProperty("net.sf.ehcache.configurationResourceName")); 
    return properties; 
} 

Sie müssen 'org.hibernate: hibernate- ehcache: HIBERNATE_VERSION' auf Ihrem Classpath.

Siehe: Ehcache doc on hibernate configuration