4

hibernateプロジェクトで2番目のレベルのキャッシュを使用したいのですが、hibernateの2番目のレベルのキャッシュについて少し知っています。コードでこれをどのように使用するか、必要な構成と.jarファイルを説明できますか?これらの設定をhibernate.cfg.xmlファイルに設定しました

 <property name="hibernate.cache.use_query_cache">true</property>
    <property name="hibernate.cache.use_second_level_cache">true</property>
    <property name="hibernate.cache.provider_class">net.sf.ehcache.hibernate.EhCacheProvider</property>

これらのjarファイルehcache-1.6.1.jar, ehcache-1.6.1-javadoc.jar, ehcache-1.6.1-sources.jar を追加してください。他の構成を変更する必要がありますか?

プロジェクトが第2レベルのキャッシュを使用していることをどのように理解できますか?

この設定を行うだけの場合、休止状態はこれを自動的に使用するか、.javaクラスで他のコードを使用する必要があります(注釈など)

4

2 に答える 2

5

探している注釈はorg.hibernate.annotations.Cacheです。基本的な使用方法は次のとおりです。

@Entity
@Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public MyEntity {
    ...

  @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
  public List<ElementType> getSomeCollection() {
    ...
  }
}

クエリの場合、プロパティを trueに設定してクエリ キャッシュを有効にし、その宣言で (名前付きクエリの場合)、またはクエリ インスタンスを呼び出して、クエリがキャッシュ可能であることを指定する必要があります。 hibernate.cache.use_query_cachesetCacheable(true)

とはいえ、キャッシングには十分に注意し、自分が何をしているのかをよく理解する必要があります。これを「応急処置」と見なさないでください。たとえば、すべてをキャッシュすることは間違いなく間違っています。

于 2009-08-02T05:57:17.003 に答える
4

設定により、第 2 レベル キャッシュとクエリ キャッシュをプロジェクトで使用できるようになりますが、特定のエンティティ、コレクション、およびクエリに対して有効にする必要があります。理解する必要があるトレードオフがあるため、これには慎重な計画が必要です。一般に、第 2 レベルおよびクエリ キャッシュは、読み取り専用またはほとんどが読み取りのデータには適していますが、揮発性のデータには適していません。まだ所有していない場合は、Java Persistence with Hibernateのコピーを取得することをお勧めします。それは主題の非常に良い扱いをしています。

于 2009-08-01T14:17:28.493 に答える