패스잇
백엔드 개발 · 중급

JPA의 더티 체킹(Dirty Checking)이란 무엇이며, 어떻게 동작하나요?

힌트 · 스냅샷 비교와 트랜잭션 커밋 시점의 동작을 설명해보세요.

영속성 컨텍스트변경 감지스냅샷트랜잭션 커밋자동 업데이트

모범답안

JPA의 더티 체킹은 영속성 컨텍스트가 관리하는 엔티티의 변경 사항을 자동으로 감지하고 데이터베이스에 반영하는 메커니즘입니다.

동작 방식은 이렇습니다. 엔티티를 영속성 컨텍스트에 처음 로드할 때, JPA는 해당 엔티티의 스냅샷을 찍어 보관합니다. 트랜잭션이 커밋되는 시점에, 현재 엔티티의 상태와 스냅샷을 비교하여 변경된 부분이 있는지 확인합니다.

만약 변경된 부분이 있다면, JPA는 자동으로 UPDATE 쿼리를 생성하여 데이터베이스에 변경 사항을 반영합니다. 개발자가 직접 EntityManager.persist() 같은 메서드를 호출하지 않아도 변경 사항이 자동으로 업데이트되는 것이죠. 이 덕분에 개발자는 엔티티의 변경 사항을 일일이 추적하고 업데이트하는 번거로움을 덜 수 있습니다.

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

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

함께 보는 JPA / ORM 면접 질문

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