Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 冬眠相当于日食';什么是批量查询提示?_Java_Hibernate_Jpa_Ejb_Eclipselink - Fatal编程技术网

Java 冬眠相当于日食';什么是批量查询提示?

Java 冬眠相当于日食';什么是批量查询提示?,java,hibernate,jpa,ejb,eclipselink,Java,Hibernate,Jpa,Ejb,Eclipselink,有一件事我很喜欢,那就是所谓的冬眠,我还没有找到冬眠的等价物 基本上,做一大堆连接很快就会变得一团糟,最终查询的数据比您需要的要多(请记住,如果您将person连接到6个地址,那么person信息将返回6次;现在继续用额外的连接将其相乘) 假设一个人实体拥有0:M个地址、电子邮件、电话和订单历史记录集合。用批处理方法将所有不好的部分连接起来: List persons = entityManager.createQuery("select p from Person p" .setHint(

有一件事我很喜欢,那就是所谓的冬眠,我还没有找到冬眠的等价物

基本上,做一大堆连接很快就会变得一团糟,最终查询的数据比您需要的要多(请记住,如果您将person连接到6个地址,那么person信息将返回6次;现在继续用额外的连接将其相乘)

假设一个人实体拥有0:M个地址、电子邮件、电话和订单历史记录集合。用批处理方法将所有不好的部分连接起来:

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子句,那么地址加载也将使用相同的条件

因此,不是执行1个查询,而是执行5个查询

如果您使用连接执行此操作,可能会在一个查询中获得所有内容,但由于连接,您很可能会加载更多数据


无论如何,我已经在Hibernate文档中查找了与此等效的文档,但没有看到。有吗?

我知道有两件事可能会有所帮助:

1)
hibernate.default\u batch\u fetch\u size


2) Criteria.setFetchMode和Criteria.setFetchSize没有一个