web-dev-qa-db-ja.com

EhCacheProviderが非推奨になるのはなぜですか?

クエリキャッシュを利用できるように、第2レベルのキャッシュプロバイダーを使用するようにHibernateプロジェクトを構成しています。

Ehcacheに依存関係を追加しました:

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

使用したいプロバイダークラスは次のとおりです。

net.sf.ehcache.hibernateEhCacheProvider

Eclipseで参照されているライブラリを見ると、EhCacheProviderSingletonEhCacheProvider@Deprecatedアノテーションがあります。何が得られますか?使用できる最新の代替プロバイダーはありますか?

重要な場合に備えて、Hibernateバージョン3.4.0.GAを使用しています。

19
RMorrisey

何が得られますか?使用できる最新の代替プロバイダーはありますか?

新しい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プロパティを置き換えます。

参考文献

46
Pascal Thivent

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の内部例外が発生します。

16
Milan Aleksić

EhCache docs Hibernate 3.3以降では、次を使用する必要があると述べています。

<property name="hibernate.cache.region.factory_class">
    net.sf.ehcache.hibernate.EhCacheRegionFactory
</property>

(またはnet.sf.ehcache.hibernate.SingletonEhCacheRegionFactory

5
Bozho

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
4