0

異なるタイプに属するオブジェクトのセットを並行して取得する方法はありますか? Id を持っている PurchaseOrder オブジェクト、Invoice オブジェクト、および Product オブジェクトの読み取りを行っています。シーケンシャルな session.get() を実行する代わりに、Hibernate を使用してそれらを一緒にロードする方法はありますか。これらの get() のそれぞれに 30 ミリ秒かかる場合、順次ではなく並列に実行できれば 60 ミリ秒節約できます。私は読み取りのみを行っており、このトランザクションでは更新を行っていません。getMulti() のようなものは素晴らしいでしょう!

4

1 に答える 1

0

最終的に、Hibernate は SQL クエリを使用してデータベースからデータをロードする必要があります。また、関連のないテーブルから一度に 3 つの行を読み込むことはできません。したがって、これは Hibernate API を使用しても不可能です。

ただし、エンティティが関連付けを介して接続されている場合は、HQL クエリを使用して一度にすべてを読み込むことができます。たとえば、 PurchaseOrder に製品との ManytoOne 関連付けと Invoice との ManyToOne 関連付けがある場合、次の HQL クエリを使用して、 PurchaseOrder をその請求書とその製品と共に読み込むことができます。

select o from PurchaseOrder o
left join fetch o.invoice i
left join fetch o.product p
where o.id = :orderId
于 2012-08-01T09:46:16.090 に答える