fetch join

    [JPA] @EntityGraph 란?

    [JPA] 일반 Join과 Fetch Join의 차이 에서 N+1문제를 해결하기 위해 fetch join을 쓴다는 것을 알 수 있었죠! @EntityGraph는 바로 Spring Data JPA에서 fetch join을 어노테이션으로 사용할 수 있도록 만들어 준 기능입니다! 일반적으로 fetch join을 사용하기 위해서는 아래코드처럼 JPQL을 직접 입력해주어야하는 수고로움이 있습니다. @Query("SELECT distinct t FROM Team t join fetch t.members") public List findAllWithMemberUsingFetchJoin(); 하지만 @EntityGraph를 사용하면 이렇게 간편하게 바뀔 수 있습니다 :)) @Override //기본 적으로 findAl..

    [JPA] 일반 Join과 Fetch Join의 차이

    Spring Data JPA(이하 줄여서 JPA)를 사용하다보면 연관 관계 맵핑이 된 엔티티를 사용하면서 N+1의 문제를 마주하고는 합니다. 예를 들어 우리가 보통 DB에서 연관 맵핑 관계를 볼때는 join 문을 사용해서 쿼리를 만들지만 이상하게 JPA repository로 엔티티를 호출하면 연관된 맵핑만큼 select 쿼리가 만들어집니다 바로 N+1번 쿼리가 진행되는것이죠. 이때 보통 아래 코드처럼 fetch join 이 들어간 JPQL 코드를 작성해서 문제를 해결합니다 @Query("SELECT distinct t FROM Team t join fetch t.members") public List findAllWithMemberUsingFetchJoin(); 왜 일반 join으로는 해결을 못할까요? ..