문제
특정 보드 ID에 관한 연결된 컬럼들이랑 그 각 컬럼들에 연결된 카드들 가져올때 N+1 문제 발생
먼저 코드를 보면 중간 테이블을 이용해서 특정 ID 보드를 가져오고 그 보드에서 연결된 컬럼들을(columnList) 가져온다.
그후 columnList에 들은 각 컬럼들에서 또 연결된 카드들을(columns.getCards() )가져오는데 N+1문제가 생긴다.
결국 이렇게 쿼리문이 5개 나간다.(해당 보드에 연결된 컬럼이 총5개)
원인
컬럼에 카드랑 연결관계인 cards필드를 지연로딩으로 설정해서 각 컬럼의 cards에 접근할때 쿼리문을 따로따로 날려서 컬럼 총 갯수만큼 쿼리문이 나간다.
해결
Fetch Join을 이용해서 총 컬럼의 정보를 가져올때 동시에 각 컬럼에 들은 카드정보도 가져온다.
특정 보드에 연결된 컬럼들의 id만 빼와서 리스트로 만들고 JPQL로 컬럼들의 리스트 받은다음 페치 조인을 이용해서
쿼리문 한번에 모든 정보를 가져오게 한다.