在Hibernate中检索图结构

克里斯:

对象结构是这样的

  • 发票
    • 顾客
    • 日期
    • 有很多产品线(产品,数量,价格)
    • 有许多服务专线(服务,数量,价格)
    • 有很多PaymentOptions(PaymentType(Check,Receipt等),Date,Sum)

如果我需要使用Hibernate检索给定时间段的发票清单,则很容易进行延迟加载而无需编写任何代码,只需调用get ...但是存在太多数据库调用的缺点,因此在多用户环境中,解决方法不好。

使用普通的JDBC,我使用3个查询解决了此问题:发票和产品线,发票和服务线以及发票和付款选项之间的3个联接。之后,我在内存中构造了对象。

可以使用Hibernate进行相同的操作,我知道但是我的问题是没有负载图之类的东西,所以我可以传递发票清单并以最少的调用次数(最佳调用次数)传递数据?

拉斯·海沃德(Russ Hayward):

您可以将查询与联接获取一起使用,以将整个对象图存储到内存中:

Query query = entityManager.createQuery("select distinct invoice from Invoice as invoice " 
            + "left join fetch invoice.productLines "                
            + "left join fetch invoice.serviceLines "
            + "left join fetch invoice.paymentOptions");
for (Object object : query.getResultList()) {
    // Code here
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章