2012-08-06 14 views
5

Ho letto altri thread qui su questo argomento ma nessuna delle soluzioni funziona per me.Come configurare la cache di secondo livello in Hibernate 4.1.5 SP1?

Ho provato a mettere questo nel mio hibernate.cfg.xml:

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

ottengo sempre questo errore: Impossibile creare un'istanza RegionFactory [org.hibernate.cache.spi.EntityRegion]

Ho anche provato la maggior parte dei suggerimenti dai thread sui siti Web di Hibernate, ma senza fortuna.

Quindi come si configura?

risposta

11

Bene, ho trovato la risposta (da un utente Youtube):

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.

Anche se non avete fatto questo già, aggiungere questo al vostro hibernate.cfg.xml:

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

Il punto chiave qui è stato l'aggiunta del jar ehcache dalla directory \ facoltativa in Hibernate4.

2

aggiungere le seguenti proprietà per le proprietà di Hibernate:

<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> 

È necessario hibernate-EHCache 4.1.1 vaso o no vaso EHCache.

Prendere nota della classe del provider cache che è stata modificata.

1

Spero, potrebbe essere di qualche utilità per qualcuno (ibernazione 4.x).

L'estratto dal mio configurazione primavera:

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; 
} 

È necessario disporre di 'org.hibernate: hibernate-EHCache: HIBERNATE_VERSION' sul classpath.

Vedi: Ehcache doc on hibernate configuration

Problemi correlati