Hibernate第2レベルキャッシュ<< net.sf.ehcache.hibernate.EhCacheProvider>>
-
06-07-2019 - |
質問
Hibernate Projectでセカンドレベルキャッシュを使用したいのですが、Hibernateセカンドレベルキャッシュについて少し知っているだけで、コードでこれを使用する方法と、必要な構成と.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
他の設定を変更する必要があるかどうかを知りたいですか?
そして私のプロジェクトが二次キャッシュを使用していることをどのように理解できますか?
この設定を置くだけの場合、休止状態は自動的にこれを使用するか、.javaクラスで他のコードを使用する必要があります(注釈など)
解決
探している注釈はですorg.hibernate.annotations.Cache 。基本的な使用法は次のとおりです。
@Entity
@Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public MyEntity {
...
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public List<ElementType> getSomeCollection() {
...
}
}
クエリの場合、が必要です。 hibernate.cache.use_query_cache
プロパティをtrueに設定し、(名前付きクエリの場合)宣言でクエリがキャッシュ可能であることを指定するか、 setCacheable(true)を呼び出して、クエリキャッシュを有効にします
クエリインスタンスのcode>。
とは言っても、キャッシングと実際に何をしているのかを本当に理解するためには細心の注意を払う必要があります。 「簡単な修正」と見ないでください。 -たとえば、すべてをキャッシュすることは、間違いなく間違いなく行うことです。
他のヒント
設定により、プロジェクトでセカンドレベルキャッシュとクエリキャッシュを使用できるようになりますが、特定のエンティティ、コレクション、クエリに対してそれを有効にする必要があります。理解する必要があるトレードオフが存在するため、これには慎重な計画が必要です。一般に、2次キャッシュとクエリキャッシュは、読み取り専用または読み取り主にデータに適していますが、揮発性データには適していません。まだ所有していない場合は、 HibernateでのJava Persistence のコピーを取得することをお勧めします。 。それは主題の非常に良い治療法を持っています。