对象结构是这样的
如果我需要使用Hibernate检索给定时间段的发票清单,则很容易进行延迟加载而无需编写任何代码,只需调用get ...但是存在太多数据库调用的缺点,因此在多用户环境中,解决方法不好。
使用普通的JDBC,我使用3个查询解决了此问题:发票和产品线,发票和服务线以及发票和付款选项之间的3个联接。之后,我在内存中构造了对象。
可以使用Hibernate进行相同的操作,我知道但是我的问题是没有负载图之类的东西,所以我可以传递发票清单并以最少的调用次数(最佳调用次数)传递数据?
您可以将查询与联接获取一起使用,以将整个对象图存储到内存中:
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] 删除。
我来说两句