복붙노트

[SPRING] Spring을 사용하여 2 차 레벨 캐시를 최대 절전 모드로 만듭니다.

SPRING

Spring을 사용하여 2 차 레벨 캐시를 최대 절전 모드로 만듭니다.

나는 Spring + JPA + Hibernate를 사용하고있다. 나는 Hibernate의 2 차 수준 캐시를 활성화하려고 노력하고있다. 내 Spring의 applicationContext.xml에는 다음과 같은 것들이있다.

<prop key="hibernate.cache.provider_class">net.sf.ehcache.hibernate.SingletonEhCacheProvider</prop>
<prop key="hibernate.cache.provider_configuration_file_resource_path">/ehcache.xml</prop>

실행하면 오류가 발생합니다.

Caused by: org.hibernate.HibernateException: Could not instantiate cache implementation
     at org.hibernate.cache.CacheFactory.createCache(CacheFactory.java:64)

Caused by: org.hibernate.cache.NoCachingEnabledException: Second-level cache is not enabled for usage [hibernate.cache.use_second_level_cache | hibernate.cache.use_query_cache]
     at org.hibernate.cache.NoCacheProvider.buildCache(NoCacheProvider.java:21) 

따라서 두 번째 레벨 캐시를 사용할 수 없다는 불만이 있습니다. 내 applicationContext.xml에 추가하여 활성화하려고 시도합니다.

<prop key="hibernate.cache.use_second_level_cache">true</prop>

그러나 여전히 기쁨은 없습니다. 나는 또한 이것을 내 ehcache.xml에 추가하려고 시도했다.

<property name="hibernate.cache.use_second_level_cache">true</property>

하지만 여전히 작동하지 않습니다. provider_class를 org.hibernate.cache.EhCacheProvider로 변경해도 도움이되지 않습니다.

<prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>

내 엔티티 클래스는 캐싱을 사용하도록 주석 처리됩니다.

@Cache(usage=CacheConcurrencyStrategy.READ_ONLY)

그렇다면 2 차 수준 캐시를 사용하려면 어떻게해야합니까?

편집 : 이것은 콩 밑에있다 :

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">

해결 방법 : LocalEntityManagerFactoryBean을 사용하고 있으므로 META-INF / persistence.xml에서 설정을 가져옵니다. applicationContext.xml의 내 설정도 읽히지 않았습니다.

해결법

  1. ==============================

    1.나는 대답하지 않았지만, 포스터가 그 답을 찾았다는 것은 분명하지 않다. 나는 그의 대답을 reposting 오전 :

    나는 대답하지 않았지만, 포스터가 그 답을 찾았다는 것은 분명하지 않다. 나는 그의 대답을 reposting 오전 :

    LocalEntityManagerFactoryBean을 사용하기 때문에 META-INF / persistence.xml에서 설정을 가져옵니다. applicationContext.xml의 내 설정도 읽히지 않았습니다.

  2. ==============================

    2.이 시도:

    이 시도:

    <prop key="hibernate.cache.use_query_cache">true</prop>
    <prop key="hibernate.max_fetch_depth">4</prop>
    <prop key="hibernate.cache.use_second_level_cache">true</prop>
    <prop key="hibernate.cache.use_query_cache">true</prop>
    <prop key="hibernate.cache.region.factory_class">net.sf.ehcache.hibernate.EhCacheRegionFactory</prop>
    

    Maven을 사용하는 경우 POM 파일에 다음을 추가하십시오.

    <dependency>
      <groupId>net.sf.ehcache</groupId>
      <artifactId>ehcache-core</artifactId>
      <version>2.3.0</version>
    </dependency>
    

    또는 http://ehcache.org/에서 최신 항아리를 다운로드하십시오.

  3. ==============================

    3.이 링크는 Hibernate 4에서 2 차 캐시를 사용하는 데 도움이되었습니다.

    이 링크는 Hibernate 4에서 2 차 캐시를 사용하는 데 도움이되었습니다.

  4. from https://stackoverflow.com/questions/474159/hibernate-second-level-cache-with-spring by cc-by-sa and MIT license