2012-02-22 3 views
0

ほとんどのエンティティクラスに対して、私のHibernateアプリケーションは通常、クラスのすべてのエンティティをロードします。 Hibernateに、あるクラスのすべてのエンティティが既にロードされていることを伝えることは可能ですか?そうであれば、そのクラスの1対多のコレクションを埋めるためにdbクエリーをもう作成しませんか?Hibernateは、完全にロードされたエンティティセットから1対多のコレクションロードを最適化します。

答えて

0

AFAIKこれは、OneToManyアソシエーションとアソシエーションのターゲットを第2レベルのキャッシュに格納しない限り不可能です。

もちろん、これらのエンティティが別のアプリケーションによって変更される可能性がある場合、またはアプリケーション自体がこれらのエンティティを変更し、複数のJVMにまたがってクラスタ化されている場合は、当然のことです。

そうでなければ、そのようなエンティティに第2レベルのキャッシュを使用することは非常に良い解決策です。そして、キャッシュにすでにロードされている(遅延している)ため、各セッションのすべてのエンティティをロードすることを避けることもできます。

+0

ありがとうございましたNizet、私には休止状態の第2レベルのキャッシュに関するチュートリアルをお勧めしますか? – Vladimir

+0

いいえ、私はリファレンスドキュメントから始めたいと思います。 http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/ –

+0

もう一度、Nizetに感謝します。おそらくあなたが気にしない場合は、おそらくもっと質問をします。 – Vladimir

関連する問題