N+1 문제(N+1 Select)에 대해서
JPA를 사용하는 사람들은 셀 수 없을 정도의 쿼리 양. 정말 몰랐었다. JPA를 사람들이 왜 꺼려 하는지 이제야 이해 했다고나 할까? 나는 그저 사용자의 리스트를 보고 싶었을 뿐이다. 이렇게 페이징을 사용하여 10명의 사용자를 불렀다. 물론 JPA의 findAll() 메소드를 통해서 불렀다. 그랬더니 왠걸 내가 원했던 사용자만 불러 온 것이 아니라 사용자와 Join 되어있는 부서, 권한 등 사용자와 연관 되어있는 엔티티들을 쿼리는 다 불러오는 것이었다. 쿼리의 양은 세기 귀찮을 정도로 많았다. 뭐... 엄청 많다 즉시 로딩과 지연 로딩 우선 N+1문제에 대해 이야기 하기 전 즉시 로딩과 지연 로딩에 대해 이야기 해보자. 즉시 로딩이란 자신과 연관된 엔티티를 실제로 사용 할 때 연관된 엔티티를 조회 하는..
2019. 12. 19. 18:43