"JOIN FETCH" 和 "JOIN" 有什么区别?
What's the difference between "JOIN FETCH" and "JOIN"?
假设我有一个 Person
实体,它与 Phone
实体有 @OneToMany
关系。如果我想急切地获取与 Person
关联的 Phone
个实体,我有 2 个选项:
SELECT p FROM Person p JOIN p.phones
或
SELECT p FROM person p JOIN FETCH p.phones
那么它们有什么区别呢?
请记住,JOIN FETCH 最后始终是 JOIN。
默认情况下 @OneToMany
关系是延迟加载的。
使用 JOIN FETCH 可以提前加载相关实体。
阅读 Piotr Nowicki 的 FETCH JOIN is still a JOIN
可以找到更多信息
假设我有一个 Person
实体,它与 Phone
实体有 @OneToMany
关系。如果我想急切地获取与 Person
关联的 Phone
个实体,我有 2 个选项:
SELECT p FROM Person p JOIN p.phones
或
SELECT p FROM person p JOIN FETCH p.phones
那么它们有什么区别呢?
请记住,JOIN FETCH 最后始终是 JOIN。
默认情况下 @OneToMany
关系是延迟加载的。
使用 JOIN FETCH 可以提前加载相关实体。
阅读 Piotr Nowicki 的 FETCH JOIN is still a JOIN
可以找到更多信息