단순히 멤버만 사용하는 로직인데 팀을 가져와야 하나?
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "team_id")
private Team team;
멤버를 조회 했을 때 팀은 프록시 객체이고 팀에 접근 하는 시점에 프록시 객체가 초기화 되면서 쿼리가 날아간다.
그런데 만약 멤버에서 거의 항상 팀을 필요로 한다면?
두번의 쿼리가 발생하는 것은 낭비다. 그래서 한번에 가져올 수 있다.
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "team_id")
private Team team;
조인 쿼리가 발생한다. @ManyToOne
은 기본값이 EAGER 이다.
JPA 구현체는 가능하면 SELECT를 두번 하기 보다는 조인을 사용해서 SQL 한번에 함께 조회