0

有没有办法可以并行获取一组属于不同类型的对象?我正在读取一个 PurchaseOrder 对象、一个 Invoice 对象和我拥有 Ids 的 Product 对象。有没有一种方法可以使用 Hibernate 将它们一起加载,而不是执行顺序 session.get()s。如果这些 get() 中的每一个都需要 30 毫秒,如果我可以并行而不是顺序执行它们,我会节省 60 毫秒。我只在此事务中进行读取而不进行任何更新。像 getMulti() 这样的东西会很棒!

4

1 回答 1

0

最后,Hibernate 必须使用 SQL 查询从数据库中加载数据。而且 AFAIK,不可能一次从不相关的表中加载三行。因此,使用 Hibernate API 也是不可能的。

如果实体通过关联连接,您可以使用 HQL 查询一次加载所有内容。例如,如果 PurchaseOrder 与 Product 关联 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 回答