JPA Dirty Checking사용시 주의점 - JPA를 사용한 업데이트 연산을 믿지 말자.
JPADirty Checking트랜잭션ORM데이터베이스Performance Optimization
AI 요약
Beta이 글은 JPA의 Dirty Checking 기능을 사용할 때 발생할 수 있는 성능 문제와 그 해결 방법을 다룹니다. 카카오헤어샵 백엔드 개발팀은 API 모니터링 중 응답 속도가 느린 API를 발견했고, 원인을 분석한 결과 JPA의 Dirty Checking 메커니즘이 예상치 못한 성능 저하를 일으키고 있음을 확인했습니다.
특히, 여러 개의 알림 엔티티를 조회한 후 각각의 엔티티에 대해 `viewBadge` 메소드를 호출하여 변경 사항을 저장하는 과정에서, 트랜잭션 커밋 시 알림 개수만큼의 UPDATE 쿼리가 불필요하게 실행되는 문제가 있었습니다. 이를 해결하기 위해, 알림 ID 목록만 조회한 후 벌크 업데이트(Bulk Update)를 수행하도록 코드를 개선하여 성능을 최적화하는 방법을 제시합니다.
JPA의 편리함 뒤에 숨겨진 잠재적인 성능 이슈를 인지하고, 효율적인 데이터베이스 연산을 설계하는 것이 중요함을 강조합니다.
이 글이 궁금하신가요?
원문 블로그에서 전체 내용을 확인해 보세요
원문 읽으러 가기
