2011-02-09 10 views
3

私はHibernate second-level-cacheが有効で、1000インスタンスが毎日作成され8年間保持されているエンティティをキャッシュしたいと考えていますが、クエリは最新の2日間しか処理しません。歴史的なルックアップのまれなケースでは、コードは日付に依存するため、履歴テーブルを作成する必要はありません。特定のエンティティのHibernateセカンドレベルキャッシュのサイズを制限することはできますか?

Hibernateは、Level-2プロバイダとしてInfinispanを使用して、HibernateがエンティティFooに使用する特定の属性(追い出しポリシー、サイズなど)を持つ特定のキャッシュを非常に具体的に設定できますか?

答えて

1

はい。 Hibernateでは、N個のキャッシュ "領域"を持つことができます。これらの領域は、構成が異なり、いくつかのエンティティに固有のものもあります。設定自体はプロバイダ(Infinispan、あなたの場合)に依存しています。 Infinispanの構成の詳細については、このドキュメントを参照してください:エンティティ/コレクションのデフォルトを上書きする方法の例で

http://community.jboss.org/wiki/usinginfinispanasjpahibernatesecondlevelcacheprovider#Advanced_Configuration

ルック。ここで、キャッシュ内に保持するエンティティの追い出し戦略、有効期間、および数を設定できます。