2012-08-01 27 views
0

有没有办法以并行方式获得属于不同类型的一组对象?我正在为一个PurchaseOrder对象,一个Invoice对象和我拥有该Id的Product对象进行Read。而不是做一个连续的session.get(),有没有办法使用Hibernate将它们加载在一起。如果每个get()需要30ms,我可以节省60ms,如果我可以并行而不是按顺序执行它们。我只做了一个阅读,并没有在这个交易中做任何更新。像getMulti()会很棒!同时加载不同实体类型的对象

+0

什么的含量之间的关系你的问题和标题? – 2012-08-01 07:06:11

+0

@JBNizet对不起,更正了。是一个错字。 – user1076371 2012-08-01 09:35:08

回答

0

最后,Hibernate必须使用SQL查询从数据库加载数据。而AFAIK,不可能一次加载三个不相关表的行。所以这不可能使用Hibernate API。

如果实体通过关联连接,您可以使用HQL查询一次加载所有内容。例如,如果了一个采购订单有一个产品,并与发票一多对一一个多对一的关联,你可以用它发票加载的PurchaseOrder并使用下面的HQL查询其产品:

select o from PurchaseOrder o 
left join fetch o.invoice i 
left join fetch o.product p 
where o.id = :orderId