Member ->Team 지연관계
Member만 불러올때 team에 null을 넣을수 없으니 가짜객체 프록시를 넣어준다
-> team 의 내용을 건드리는 순간 team의 진짜 데이터를 가져온다(프록시 초기화)(team 을 불러오는 쿼리 하나 또나감)
member 쿼리하나 보냈는데(1) lazy로딩 떄문에 team 까지 불러온다(N)
=N+1 문제 발생
=member 불러오는 쿼리+ 팀불러오는 쿼리
N이 커지면 성능 저하 문제 발생! ->Fetch Join 사용!
연관된 엔티티들을 SQL한번에 조회 하는 방법
팀객체를 부를떄 프록시 가짜객체가 나오지 않는다.
사실상 Fetch Join 의 간편 버전
left outer join 사용
jpql 은 실행시 sql 로 해석 되서 나간다.
ex - >(jpql+eager) select * from member -> 맴버 가져오고 어? eager 있네 하고 team가져와서 n+1문제 발생
(jpql + lazy) = 프록시 객체가 나와 n+1문제 발생 x
(jpql+ lazy) = 팀 쓰는순간 또 n+1문제 발생 -> fetch join 으로 해결