Hibernate キャッシュでクエリ キャッシュを使用する
クエリ キャッシュでは、L2 キャッシュを使用してクエリを保存します。これにより、同じクエリを再度実行する必要があるときはいつでも、キャッシュからクエリをフェッチできます。 クエリの結果として取得されたオブジェクトはそれぞれのリージョンにキャッシュされることに注意してください。 したがって、クエリ キャッシュを効率的に使用するには、オブジェクトをキャッシュ可能としてマークします。
重要
クエリと結果セットの主キーは、と呼ばれるデフォルトのクエリ領域に保存されます。 "org.hibernate.cache.StandardQueryCache"これは、Hibernate の StandardQueryCache クラスの完全修飾名です。 ただし、これは Hibernate-5.2 以前でのみサポートされます。
Note
すべてのクエリの結果が一定期間同じままであるわけではないため、結果が頻繁に変化する可能性が低いクエリにはクエリ キャッシュを使用してください。
Hibernate キャッシュでのクエリ キャッシュの有効化
クエリ キャッシュを有効にするには、Hibernate キャッシュで次のタグを設定に追加します。 hibernate.cfg.xml.
<hibernate-configuration>
<session-factory>
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.region.factory_class">com.alachisoft.ncache.NCacheRegionFactory</property>
<property name="ncache.application_id">myapp</property>
<property name="hibernate.cache.use_query_cache">true</property>
</session-factory>
</hibernate-configuration>
Hibernate キャッシュでクエリ キャッシュを有効にしても、デフォルトでは各クエリはキャッシュされません。代わりに、キャッシュする必要があるクエリはコード内でキャッシュ可能として設定されます。クエリをキャッシュ可能として設定するには、 setCacheable(true)
クエリ作成時のクエリの機能。以下のコードは、Hibernate キャッシュ内のキャッシュ可能なクエリを示す例です。
var session = sessionFactory.openSession();
ArrayList<Products> productList = (ArrayList<Products>) session.createQuery("from Products p", Products.class).setCacheable(true).list();
for (var product : productList) {
System.out.println("Retrieved Product: " + product);
}
session.close();
も参照してください
キャッシュを初期化する
キャッシュでの追加/更新
Hibernateの第XNUMXレベルのキャッシュ
キャッシュ可能なオブジェクトとリージョンを構成する
Hibernateアプリケーションを構成する