JPA 的 n+1 问题是不是与 @OneToMany 或 @ManyToOne 或两者有关?
Posted
技术标签:
【中文标题】JPA 的 n+1 问题是不是与 @OneToMany 或 @ManyToOne 或两者有关?【英文标题】:Is JPA's n+1 problem related to @OneToMany or to @ManyToOne or both?JPA 的 n+1 问题是否与 @OneToMany 或 @ManyToOne 或两者有关? 【发布时间】:2021-11-18 15:29:24 【问题描述】:当然有很多关于n+1
JPA 问题的文章以及这里的问答,其中一些从@OneToMany
的角度讨论这个问题,另一些从@ManyToOne
的角度讨论这个问题是否与两者相关?
@OneToMany
:当查询实体中的字段集合注释为@OneToMany
时
@ManyToOne
:当查询实体的字段注释为@ManyToOne
时
【问题讨论】:
【参考方案1】:即使是 @OneToOne
在延迟加载时也是如此。
如果您加载实体与一个或多个实体有关系的实体列表,则会出现问题。
所以第一个查询是获取列表,然后对于列表中的每个实体,JPA 将使用附加查询加载关系。
【讨论】:
以上是关于JPA 的 n+1 问题是不是与 @OneToMany 或 @ManyToOne 或两者有关?的主要内容,如果未能解决你的问题,请参考以下文章
简述 JPA 与 Spring Data JPA 与 Hibernate