3

プロジェクトではHibernateを使用しています。私の質問は名前付きクエリに関するものです。名前付きクエリがHibernateによってどのように処理されるかについて誰かが教えてもらえますか?Hibernateがレベル1キャッシュを使用するように構成されている場合、名前付きクエリの結果もキャッシュから返しますか、それとも常にデータベースにアクセスしますか?

4

1 に答える 1

3

レベル1キャッシュはHibernateセッションです。ステートレスセッションが使用される非常にまれなケースを除いて、デフォルトでレベル1のキャッシュがあります。クエリの結果がレベル1キャッシュにキャッシュされることはありません。「第2レベルのキャッシュ」という意味だと思います。

名前付きクエリは、キャッシュに関する名前なしクエリとまったく同じように処理されます。

クエリはキャッシュすることもしないこともできます。それらがキャッシュされている場合、データベースへのラウンドトリップを回避できます。キャッシュされているかどうかに関係なく、第2レベルのキャッシュにあるエンティティのインスタンスを返す場合、クエリはIDを返し、エンティティ自体が第2レベルのキャッシュから読み込まれます。

詳細については、GrailsアプリのHibernate第2レベルキャッシュリファレンスドキュメントを参照してください。

于 2012-02-28T14:55:29.100 に答える