패스잇
백엔드 개발 · 심화

JPA 성능 최적화를 위한 전략들에 대해 종합적으로 설명해주세요.

힌트 · N+1 해결, 페치 조인, 배치 사이즈, 읽기 전용 쿼리 등을 종합해보세요.

N+1 문제fetch join인덱스쿼리 힌트영속성 컨텍스트

모범답안

JPA 성능 최적화는 애플리케이션 성능에 큰 영향을 미치기 때문에 중요하다고 생각합니다. 크게 N+1 문제 해결, 쿼리 최적화, 영속성 컨텍스트 활용, 그리고 기타 전략으로 나눠서 설명드릴 수 있습니다.

먼저 N+1 문제 해결을 위해 fetch join을 적극적으로 활용합니다. 연관된 엔티티를 한 번에 가져와 불필요한 쿼리를 줄일 수 있습니다. 또한 @BatchSize 어노테이션을 사용하여 IN 쿼리를 통해 한 번에 연관 엔티티들을 로딩하는 방법도 있습니다.

쿼리 최적화 측면에서는 인덱스 활용이 중요합니다. 자주 사용되는 컬럼에 인덱스를 생성하여 검색 속도를 향상시킬 수 있습니다. 또한, 읽기 전용 쿼리의 경우 @QueryHints를 사용하여 하이버네이트에게 힌트를 주어 성능을 개선할 수 있습니다.

영속성 컨텍스트를 효율적으로 관리하는 것도 중요합니다. 불필요한 엔티티 변경 추적을 막기 위해 읽기 전용 엔티티로 조회하거나, EntityManagerclear() 메서드를 사용하여 영속성 컨텍스트를 주기적으로 비워주는 것이 좋습니다.

마지막으로, 필요에 따라 네이티브 쿼리나 JDBC API를 직접 사용하여 JPA의 오버헤드를 줄일 수도 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 JPA / ORM 면접 질문

← JPA / ORM 면접 질문 전체 보기