Team
을 가져와야 하나?
@Entity
public class Member {
@Id
@GeneratedValue
private Long id;
@Column(name = "USERNAME")
private String name;
@ManyToOne(fetch = FetchType.LAZY) //**
@JoinColumn(name = "TEAM_ID")
private Team team;
..
}
지연로딩 (LAZY
)를 하게 되면, Team
을 프록시로 가져온다.
@Entity
public class Member {
@Id
@GeneratedValue
private Long id;
@Column(name = "USERNAME")
private String name;
@ManyToOne(fetch = FetchType.EAGER) //**
@JoinColumn(name = "TEAM_ID")
private Team team;
..
}
프록시를 사용하지 않고 즉시 다 가져옴
즉시로딩(EAGER
) 사용시, Member
조회할때 항상 Team
도 조회
LAZY
)만 사용Member
를 조회하면 Team
을 무조건 가져오므로,Team
을 조회하는 쿼리가 하나 더 나간다.@ManyToOne
, @OneToOne
은 기본이 즉시 로딩
-> LAZY로 설정JPQL에서도 join fetch
등을 이용해 EAGER
을 사용할 수 있음.
(LAZY
가 걸려있어도 값을 가져옴)