JPA 的 n+1 问题是否与@OneToMany 或@ManyToOne 或两者相关?
Is JPA's n+1 problem related to @OneToMany or to @ManyToOne or both?
当然有很多关于 n+1
JPA 问题的文章和这里的问答,其中一些从 @OneToMany
的角度讨论问题,其他的 @ManyToOne
是与两者相关的问题?
@OneToMany
:当查询实体时,其中有一个字段集合被注解@OneToMany
@ManyToOne
:当查询实体中有一个字段被注解时@ManyToOne
对于两者甚至 @OneToOne
延迟加载时。
如果您加载实体列表,其中实体与一个或多个实体有关系,则会出现此问题。
所以第一个查询是获取列表,然后对于列表中的每个实体,JPA 将使用附加查询加载关系。
当然有很多关于 n+1
JPA 问题的文章和这里的问答,其中一些从 @OneToMany
的角度讨论问题,其他的 @ManyToOne
是与两者相关的问题?
@OneToMany
:当查询实体时,其中有一个字段集合被注解@OneToMany
@ManyToOne
:当查询实体中有一个字段被注解时@ManyToOne
对于两者甚至 @OneToOne
延迟加载时。
如果您加载实体列表,其中实体与一个或多个实体有关系,则会出现此问题。
所以第一个查询是获取列表,然后对于列表中的每个实体,JPA 将使用附加查询加载关系。