向JPA 2.1查询提供EntityGraph提示时,javax.persistence.fetchgraphjavax.persistence.loadgraph有何不同?该文档还不清楚。

最佳答案

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

如果您想急于加载通常通过lazy批注加载的实体,则可以使用loadgraph将实体添加到稍后通常加载的查询结果中,从而避免了特定的N + 1情况。已经标记为eager的关系将继续照常加载。

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

07-27 15:07