- JPQL의 성능 튜닝을 위해 제공되는 조인
- 연관된 엔티티 or 컬렉션을 SQL한번에 함께 조회하는 기능
example
@Entity
@Getter
public class Member {
@Id @GeneratedValue
private Long id;
private String username;
private int age;
// 양방향 연관 필드
// 연관관계 주인
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "TEAM_ID")
private Team team;
}
@Entity
@Getter
public class Team {
@Id @GeneratedValue
private Long id;
private String name;
// 양방향 연관 필드
@OneToMany(mappedBy = "team")
private List<Member> memList = new ArrayList<Member>();
}
// JPQL
select m from Memeber m join fetch m.team
// 실제 데이터베이스에 전송되는 SQL
SELECT M.*, T.* FROM MEMBER M INNER JOIN TEAM T ON M.TEAM_ID = T.ID