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_class
をorg.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
の設定が読み取られていません。
私はこれには答えませんでしたが、ポスターが自分で答えを見つけたのは明らかではありません。私は彼の答えを再投稿しています:
私はLocalEntityManagerFactoryBean
を使用しているので、META-INF/persistence.xml
から設定を取得します。 applicationContext.xml
の設定が読み取られていません。
これを試して:
<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をダウンロードします
このリンク は、Hibernate 4で2次キャッシュを使用するのに役立ちました