2011-12-20 22 views
2

共通のエンティティモジュール(エンティティクラス+ Hibernate XMLマッピング)を共有する複数のJavaアプリケーションがあることを前提としています。現在、エンティティはキャッシュできません(マッピング内の要素は<cache.../>ではありません)。1つのHibernateマッピングを持つ複数のセカンドレベルキャッシュ設定

ほとんどのアプリケーションは、1つのエンティティの編集に大いに関係しているため、2番目のレベルのキャッシュを解放することはできません。

今、新しいアプリケーションが

  1. が同じエンティティマッピング
  2. を使用する必要がありますが、第二のレベルとクエリキャッシュを使用する必要が実装されています。

キャッシュの設定方法は?

いくつかの観察:

  1. これは、このようなキャッシュを設定しないと、私の影響下にされていない他のアプリケーション壊すので、私はマッピングに<cache.../>要素を追加することはできません。

    Second-level cache is not enabled for usage [hibernate.cache.use_second_level_cache | hibernate.cache.use_query_cache]

  2. マッピングの外部でキャッシュするエンティティをアクティブにする方法が見つかりません。 ehcache.xml内のエンティティのためのキャッシュ領域を設定すると、私は他のすべてのアプリケーションを変更すると、エンティティのマッピングに<cache.../>を追加することができたとしても、それはそれはそうで述べているがhibernate.cache.use_second_level_cache=falseを設定することで、キャッシュを無効にするには動作しません
  3. を助けていませんhttp://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html、表3.5

答えて

1

あなたが3.8. XML configuration fileを参照してください、というエンティティのマッピングよりもhibernate.cfg.xmlでキャッシングを設定する<class-cache>要素を使用することができますように見えます。

私は既存のマッピングを使用するカスタムhibernate.cfg.xmlを作成する余裕があると思いますが、そうでない場合は、Configuration.setCacheConcurrencyStrategy()の方法も役立ちます。

+0

ありがとうございました、盲目になったはずですが、私は本当にそのような設定オプションを見つけようとしました。 たとえば、プログラムによるSpringの設定が好きな方には、 'LocalSessionFactoryBean'、corresponsing方法は' setEntityCacheStrategies(プロパティentityCacheStrategies) ' あるhttp://static.springsource.org/spring/docs/2.5.x/api/org/springframework/orm/hibernate3/LocalSessionFactoryBean.html# setEntityCacheStrategies(java.util.Properties) – rainer198

関連する問題