クエリキャッシュを利用できるように、第2レベルのキャッシュプロバイダーを使用するようにHibernateプロジェクトを構成しています。
Ehcacheに依存関係を追加しました:
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache-core</artifactId>
<version>2.2.0</version>
</dependency>
使用したいプロバイダークラスは次のとおりです。
net.sf.ehcache.hibernateEhCacheProvider
Eclipseで参照されているライブラリを見ると、EhCacheProvider
とSingletonEhCacheProvider
に@Deprecated
アノテーションがあります。何が得られますか?使用できる最新の代替プロバイダーはありますか?
重要な場合に備えて、Hibernateバージョン3.4.0.GAを使用しています。
何が得られますか?使用できる最新の代替プロバイダーはありますか?
新しいHibernate3.3/3.5 SPIとそのCacheRegionFactory
を実装するクラスを優先して、これらは非推奨になりました。これらの実装はそれぞれ次のとおりです。
net.sf.ehcache.hibernate.EhCacheRegionFactory
net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory
新しいSPIの利点は次のとおりです。
- SPI Hibernateキャッシュ配管の同期を削除しました。同時アクセスを制御する方法については、キャッシュの実装に任されています。Ehcacheは、1.6以降、CASアプローチを優先して同期を削除しました。結果、重いワークロードの場合は印象的です。
- 新しいSPIは、キャッシュ領域のストレージとキャッシュ戦略をよりきめ細かく制御します。Ehcache2.0はこれを利用して、メモリ使用量を削減します。読み取り専用、非厳密な読み取り/書き込みおよび読み取り/書き込み戦略、すべてのクラスターを提供します。安全。
- Ehcache 2.0は、Terracotta ServerArrayで簡単に配布できます。これにより、クラスターの安全な操作(コヒーレンシ)、HA、およびインプロセスキャッシュの制限を超える拡張が可能になります。これは、現在ほとんどのHibernateユーザーがEhcacheを使用する方法です。クライアントライブラリを提供する既存のehcache.jarとehcache-terracotta.jarがあります。 (...)
したがって、新しい実装を使用することをお勧めします。構成は、次のプロパティを介して行われます。
<property name="hibernate.cache.region.factory_class">
net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory
</property>
これは、hibernate.cache.provider_class
プロパティを置き換えます。
hibernate.cache.region.factory_classプロパティの値にHibernate 4.0.0.Final。を使用する場合は、次を使用します。
org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory
の代わりに net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory
とorg.hibernate.cache.ehcache.EhCacheRegionFactory
の代わりに net.sf.ehcache.hibernate.EhCacheRegionFactory
そうしないと、ClassNotFoundの内部例外が発生します。
EhCache docs Hibernate 3.3以降では、次を使用する必要があると述べています。
<property name="hibernate.cache.region.factory_class">
net.sf.ehcache.hibernate.EhCacheRegionFactory
</property>
(またはnet.sf.ehcache.hibernate.SingletonEhCacheRegionFactory
)
EhCache 2は非推奨になり、廃止されました。代わりにEhCache3を使用する必要があります。 5.3以降のHibernateバージョンでは、JSR-107(JCache)を使用することをお勧めします。これを行うには、2つの依存関係が必要です。
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-jcache</artifactId>
<version>your_hibernate_version</version>
</dependency>
<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>3.6.3</version>
<scope>runtime</scope>
</dependency>
1つ目は、Hibernateに準拠したJSR-107APIを提供します。 2つ目は、実際のキャッシュの実装であるEhCache3です。
また、新しいRegionFactory
を使用する必要があります。
hibernate.cache.region.factory_class=org.hibernate.cache.jcache.JCacheRegionFactory