단순히 멤버만 사용하는 로직인데 팀을 가져와야 하나?

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "team_id")
private Team team;

멤버를 조회 했을 때 팀은 프록시 객체이고 팀에 접근 하는 시점에 프록시 객체가 초기화 되면서 쿼리가 날아간다.

지연 로딩 (lazy loading)

그런데 만약 멤버에서 거의 항상 팀을 필요로 한다면?

두번의 쿼리가 발생하는 것은 낭비다. 그래서 한번에 가져올 수 있다.

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "team_id")
private Team team;

조인 쿼리가 발생한다. @ManyToOne은 기본값이 EAGER 이다.

JPA 구현체는 가능하면 SELECT를 두번 하기 보다는 조인을 사용해서 SQL 한번에 함께 조회

주의 사항