ehcacheのドキュメントでは、これについて詳しく説明しています。
基本的に、@Cache
アノテーションを使用して、キャッシュへのアクセスのタイプをHibernateに伝えることができます。
ehcache構成では、エンティティごとに1つのキャッシュを構成できます。クラス名が鍵です。これにより、エンティティごとにキャッシュする要素の数を定義できます。
Hibernateでクエリをキャッシュする場合は、プロパティhibernate.cache.use_query_cache
をに設定しますtrue
。HQLを使用すると、Hibernateは「正しいことを行う」ようになります。
[編集]
キャッシュをプライムするにはどうすればよいですか?
オブジェクトをロードして、Hibernateがクエリのためにオブジェクトを必要とするときにそれらがキャッシュにあるようにすることができます。
しかし、キャッシングは非常に複雑なトピックです。キャッシュの使用を許可および防止する多くの要因があります。単純なケースの場合、キャッシングは「正常に機能」し、何もする必要はありません。複雑なHQLがある場合は、何が起こる可能性があります。where
句の値に応じて、同じクエリに100ミリ秒または10秒かかる例を見てきました。キャッシングによって全体が遅くなるコードを見てきました。Hibernateが単に法案に適合しなかったため、Hibernateセッションから基になる接続を要求し、すべてを自分で行ったコードを見てきました。
通常のアプローチは、コードをできるだけ単純にし、結果をしばらくの間本番環境で実行することです。やがて、ユーザーはそれが遅すぎる場所について不平を言うようになります。次に、それらのいくつかの場所を最適化できます。このようにして、ユーザーが気にしないコードに時間を浪費することはありません。