19

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

ehcache に依存関係を追加しました。

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

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

net.sf.ehcache.hibernateEhCacheProvider

Eclipse で参照されているライブラリを見ると、 と に@Deprecated注釈が表示EhCacheProviderされSingletonEhCacheProviderます。何を与える?使用できる最新の代替プロバイダーはありますか?

問題が発生した場合に備えて、休止状態バージョン 3.4.0.GA を使用しています。

4

4 に答える 4

47

何を与える?使用できる最新の代替プロバイダーはありますか?

これらは、新しい Hibernate 3.3/3.5 SPI をCacheRegionFactory. これらの実装はそれぞれ次のとおりです。

  • net.sf.ehcache.hibernate.EhCacheRegionFactory
  • net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory

新しい SPI の利点は次のとおりです。

  • SPI は、Hibernate キャッシュ プラミングで同期を削除しました。同時アクセスを制御する方法は、キャッシングの実装に任されています。Ehcache は 1.6 以降、CAS アプローチを優先して同期を削除しました。重いワークロードの結果は印象的です。
  • 新しい SPI では、キャッシュ領域のストレージとキャッシュ戦略をより細かく制御できます。Ehcache 2.0 はこれを利用してメモリ使用量を削減します。読み取り専用、非厳密な読み取り書き込みおよび読み取り書き込み戦略を提供し、すべてクラスターセーフです。
  • Ehcache 2.0 は、Terracotta Server Array で簡単に配布できます。これにより、クラスタの安全な操作 (コヒーレンシ)、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ます。

参考文献

于 2010-09-11T07:40:31.853 に答える
16

Hibernate 4.0.0.Finalを使用する場合。hibernate.cache.region.factory_class プロパティの値については、次を使用します。

  • org.hibernate.cache.ehcache.SingletonEhCacheRegionFactoryとの代わりnet.sf.ehcache.hibernate.SingletonEhCacheRegionFactory
  • org.hibernate.cache.ehcache.EhCacheRegionFactoryそれ以外のnet.sf.ehcache.hibernate.EhCacheRegionFactory

そうしないと、内部 ClassNotFound 例外が発生することになります

于 2012-01-02T14:20:19.520 に答える
5

EhCacheのドキュメントによると、Hibernate 3.3 以降では以下を使用する必要があります。

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

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

于 2010-09-11T07:38:01.013 に答える