
[Spring Boot] JPA N + 1 문제 직면과 해결, 그리고 Fetch Join
·
Trouble Shootings/성능 개선
문제 상황내 프로젝트에는 최근 DDD와 헥사고날 아키텍쳐로 리팩토링을 하게되었는데 JPA 영속성 객체인 UserEntity와 User라는 POJO 도메인을 따로 분리시켜서 관리하고있다따라서 모든 도메인로직은 외부 의존성이 없는 순수 자바 코드로 구현하고, 영속성은 JPA Entity가 따로 맡아서 관리한다. 그렇게 분리하게되면, Entity 객체 Domian 객체간의 mapping이 필요하다. (나의 경우 PersistenceAdapter에서 UserEntity를 DB에서 로드한후에, Mapper를통해 User 도메인으로 변환시켜서 Service에게 반환한다.) 그런데 여기서 문제가 발생했다. UserEntity에는 OneToMany로 이루어진 관계들이 많았기에, N+1문제가 발생하는것이었다. UserE..