JPA 2.1中fetchgraph和loadgraph有什么区别?

时间:2017-09-27 18:57:24

标签: java jpa-2.1

在向JPA 2.1查询提供EntityGraph提示时,javax.persistence.fetchgraphjavax.persistence.loadgraph的区别如何?文档不是很清楚。

1 个答案:

答案 0 :(得分:4)

使用fetchgraph时,无论注释如何,所有关系都被视为lazy,并且仅加载所提供图表的元素。这在运行某些对象的报告时特别有用,并且您不希望通常通过eager注释加载许多通常标记的内容。

如果您想急切加载通过lazy注释正常加载的实体,您可以使用loadgraph将实体添加到通常稍后加载的查询结果中,从而避免特定的N + 1案例。已经标记为eager的关系将继续像往常一样加载。

请参阅https://docs.oracle.com/javaee/7/tutorial/persistence-entitygraphs001.htm