web-dev-qa-db-ja.com

SpringでのHibernate 2次キャッシュ

Spring + JPA + Hibernateを使用しています。 Hibernateの2次キャッシュを有効にしようとしています。私の春の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_classorg.hibernate.cache.EhCacheProviderに変更しても、次のことは役に立ちません。

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

エンティティクラスには、キャッシュを使用するように注釈が付けられています

@Cache(usage=CacheConcurrencyStrategy.READ_ONLY)

では、2次キャッシュを有効にするにはどうすればよいですか?

編集:これはBeanの下にあります。

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

解決済み:LocalEntityManagerFactoryBeanを使用しているため、META-INF/persistence.xmlから設定を取得します。 applicationContext.xmlの設定が読み取られていません。

19
Steve Kuo

私はこれには答えませんでしたが、ポスターが自分で答えを見つけたのは明らかではありません。私は彼の答えを再投稿しています:

解決した

私はLocalEntityManagerFactoryBeanを使用しているので、META-INF/persistence.xmlから設定を取得します。 applicationContext.xmlの設定が読み取られていません。

13
Mainguy

これを試して:

<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/ から最新のjarをダウンロードします

5
Bitmap

このリンク は、Hibernate 4で2次キャッシュを使用するのに役立ちました

1
Deepak Kashyap