同时加载不同实体类型的对象

时间:2012-08-01 05:49:22

标签: hibernate

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

1 个答案:

答案 0 :(得分:0)

最后,Hibernate必须使用SQL查询从数据库加载数据。而且AFAIK,不可能同时从不相关的表中加载三行。所以这不可能使用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