💡 개요
오늘은 JPA에서 즉시로딩 사용을 피해야 하는 이유에 대해 정리해 보자.
📕 즉시로딩의 문제점
즉시로딩이란, 연관된 엔티티를 사용하든 안 하든 일단 조회를 하는 것이다.
만약에 해당 엔티티가 필요한 로직이라면 즉시로딩이 유리할 것이다.
하지만 만약 연관된 매핑된 엔티티를 사용하지 않는 로직이라면 즉시로딩으로 조회한 게 헛수고가 된다.
즉, 불필요한 데이터 조회가 발생하는 것이다.
반드시 필요한 데이터를 조회함으로써 발생하는 지연시간도 골치 아픈데, 불필요한 데이터 조회로 인해 지연시간이 더 늘어난다..?
최악이다..
이렇게 성능 측면에서 뿐만 아니라 JPA의 고질병인 N+1 문제도 발생할 가능성이 커진다.
그리고 연관된 엔티티에 또 다른 엔티티가 즉시로딩으로 연관되어 있다면..?
연쇄적으로 즉시 로딩이 발생해, 단순한 데이터 조회 쿼리가 말도 안 되게 커지게 된다.
그렇기 때문에 많은 개발자들은 기본적으로 연관된 엔티티는 지연로딩으로 설정한다.
그리고 만약 연관된 엔티티가 필요한 로직이라면 Fetch Join이나 @EntityGraph와 같은 기술을 사용해 명시적으로 필요한 데이터만 조회하는 게 올바른 방식이다.
'개발 일기' 카테고리의 다른 글
[개발 일기] 2025.04.08 - 리퍼러 정책 (1) | 2025.04.08 |
---|---|
[개발 일기] 2025.04.07 - Offset (0) | 2025.04.07 |
[개발 일기] 2025.04.05 - N+1 문제 (JPA) (0) | 2025.04.05 |
[개발 일기] 2025.04.04 - isBlank() vs isEmpty() (0) | 2025.04.04 |
[개발 일기] 2025.04.03 - @DataJpaTest vs @SpringBootTest (0) | 2025.04.03 |