How to configure second level cache in Hibernate 4.1.5 SP1?

前端 未结 3 954
面向向阳花
面向向阳花 2021-01-02 21:28

I have read other threads on here about this subject but none of the solutions work for me.

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



        
相关标签:
3条回答
  • 2021-01-02 22:05

    Hope, it may be of some use to somebody (hibernate 4.x).

    The 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 must have 'org.hibernate:hibernate-ehcache:HIBERNATE_VERSION' on your classpath.

    See: Ehcache doc on hibernate configuration

    0 讨论(0)
  • 2021-01-02 22:08

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

    1. Use hibernate-release-4.1.0.Final or later versions.
    2. Add jars from lib\optional\ehcache directory
    3. Update hibernate.cfg.xml:

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

    5. Add this to your hibernate.cfg.xml:

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

    The key point here was adding the ehcache jar from the optional\ directory in Hibernate4.

    0 讨论(0)
  • 2021-01-02 22:11

    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> 
    

    You need hibernate-ehcache 4.1.1 jar or not ehcache jar.

    Please make a note of the cache provider class which has changed.

    0 讨论(0)
提交回复
热议问题