我喜欢EclipseLink的一件事有一个叫做batch query hint的好东西,我还没有找到Hibernate的等价物.
基本上做一大堆连接变得很乱,你最终查询的方式比你想要的更多数据(请记住,如果你加入6个地址的人,那么人的信息将被返回6次;现在继续将其乘以额外的连接) .
想象一个Person实体,其中包含0:M的Address,Email,Phone和OrderHistory集合.使用批处理方法加入所有不好的方法:
List persons = entityManager.createquery("select p from Person p"
.setHint(QueryHints.BATCH,"p.address")
.setHint(QueryHints.BATCH,"p.email")
.setHint(QueryHints.BATCH,"p.phone")
.setHint(QueryHints.BATCH,"p.orderHistory")
.getResultList();
这将在Person表上进行查询,就是这样.首次访问地址记录时,它将对整个地址表执行单个查询.如果在Person表上指定了where子句,则同样的条件也将用于Address加载.
如果您使用连接执行此操作,则可以在一个查询中获取所有内容,但由于连接,您可能正在加载更多数据.
无论如何,我已经开始在Hibernate文档中寻找与此相当的东西,但是没有看到它.有吗?
最佳答案
没有一个.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。