How to configure second level cache in Hibernate 4.1.5 SP1?

I read other topics here about this topic, but none of the solutions work for me.

I tried putting this in my hibernate.cfg.xml:

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

I always get this error: Could not create an instance of RegionFactory [org.hibernate.cache.spi.EntityRegion]

I also tried most of the streaming offers on Hibernate sites, but no luck.

So how do I configure this?

+6
source share
3 answers

Well, I found the answer (from a Youtube user):

To make it work:

1) I am using hibernate-release-4.1.0.Final or later. So I added banks from the lib \ optional \ ehcache directory

2) My hibernate.cfg.xml contains:

 <property name="cache.region.factory_class">org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory</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) due to ClassNotFoundException.

Also, if you have not done so already, add this to your hibernate.cfg.xml:

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

The key point here was to add the ehcache jar from the additional \ directory in Hibernate4.

+12
source

Add the following properties to the Hibernate properties:

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

Do you need hibernate-ehcache 4.1.1 jar or not ehcache jar.

Please note the cache provider class that has changed.

+3
source

Hope this can be helpful to someone (4.x sleep mode).

Excerpt from my spring configuration:

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

You should have "org.hibernate: hibernate-ehcache: HIBERNATE_VERSION" in your class path.

See: Ehcache doc in sleep configuration

+2
source

Source: https://habr.com/ru/post/922232/


All Articles