向JPA 2.1查询提供EntityGraph提示时,javax.persistence.fetchgraph
与javax.persistence.loadgraph
有何不同?该文档还不清楚。
最佳答案
使用fetchgraph
时,无论注释如何,所有关系都被视为lazy
,并且仅加载所提供图形的元素。当在某些对象上运行报表时,这特别有用,并且您不希望通常通过eager
批注标记的很多东西加载。
如果您想急于加载通常通过lazy
批注加载的实体,则可以使用loadgraph
将实体添加到稍后通常加载的查询结果中,从而避免了特定的N + 1情况。已经标记为eager
的关系将继续照常加载。
参见https://docs.oracle.com/javaee/7/tutorial/persistence-entitygraphs001.htm