私はこのような1つのクラスを持っています:
public class BookAuthor {
private Book book;
private Author author;
}
Book と Author はエンティティとして定義されます。
データを取得しようとすると、次のようになります。
final String selectCols = "NEW BookAuthor(b,a)";
final org.hibernate.Query q = createQuery(selectCols, params, filters);
result = q.list();
return result;
Hibernate が「q.list()」を実行すると、1 つのクエリを実行して書籍と著者の ID を取得し、結果を繰り返して著者と書籍に関する情報を取得します。つまり、私のログには次のようなものがあります。
select a.ID, b.ID
from authors a , books b
そして、各行について:
select a.ID, a.name
where a.ID = ?
select b.ID, b.title
where b.ID = ?
このようなパフォーマンスを向上させるために、Hibernate に 1 つのクエリで結果を取得するように指示する方法はありますか? :
select a.ID, a.name, b.ID, b.title
from authors a , books b
前もって感謝します。
編集 :
エンティティは、次のようなテーブルと列名を参照して定義されます。
public static final String TABLE_NAME = "AUTHOR";
@Column(name = "id", nullable = false)
protected Long id;
著者と本の間に DB の制約はないと思います (これは実際のエンティティの例にすぎませんが、著者のいない匿名の本がある可能性があるとしましょう)。JB Nizet に感謝します。クエリを取得し、しばらくしてここに投稿します。