1

新しいプロジェクトを調査しているときに、一部のクエリ結果を Hibernate キャッシュに明示的にプリフェッチするという意味を持つ、いくつかのレガシー コードに遭遇しました。

そのコードによって解決されるタスクは、属性値に基づいてエンティティを選択することです。

例えば:

    SELECT c
    FROM MyEntity c
    LEFT OUTER JOIN c.relatedEntity relatedEntity
    WHERE c.field1 = :param1 AND relatedEntity.field1 = :param2 AND relatedEntity.field2 = :param3 

推奨される改善は、このクエリを実行する前にすべてのエンティティをプリフェッチすることです。つまり、メインのクエリの前に次のクエリのいずれかを実行します。

    SELECT c, relatedEntity FROM MyEntity c LEFT OUTER JOIN c.relatedEntity relatedEntity

また

    SELECT FROM MyEntity;
    SELECT FROM RelatedEntity;

この種の最適化についてどう思いますか? それは役に立ちますか?「はい」の場合、どのような状況ですか?

4

1 に答える 1