핵심 키워드 : 변경 감지, 커밋, 스냅샷, Transaction
더티 체킹이란?
JPA에서 더티 체킹(dirty checking)이란 영속성 컨테이너가 관리하는 엔티티의 상태를 감지해서, 변경된 부분이 있다면 자동으로 트랜잭션이 끝나는 시점에 데이터베이스에 반영하는 기능이다. 따라서 여기서 말하는 dirty는 “엔티티 데이터의 변경된 부분”을 뜻하며 dirty checking은 변경된 부분을 감지한다는 의미이다.
따라서 개발자가 update에 관련된 쿼리를 작성하지 않아도 되기 때문에, 코드의 복잡성을 줄일 수 있다는 특징이 있다.
더티 체킹 조건
- 영속성 컨텍스트에서 관리되는 엔티티
영속성 컨텍스트는 엔티티를 처음 조회할 때 시작되며, 이후 변경을 감지한다. 준영속/비영속 상태의 엔티티는 더티 체킹의 대상이 되지 못한다.
- Transaction이 커밋되었을 때
트랜잭션이 커밋되기 전까지 영속성 컨텍스트는 변경사항을 추적하기만 하고, DB에 반영하지는 않는다. 따라서 트랜잭션이 커밋될 때 영속성 컨텍스트는 엔티티의 변경된 상태를 DB에 반영한다.
'기술면접준비' 카테고리의 다른 글
| Java가 컴파일되는 과정은 어떻게 되는지 설명해주실 수 있을까요? (0) | 2025.04.29 |
|---|---|
| [기술면접준비] JPA는 언제 필요하고 언제 필요하지 않은지 설명해주실 수 있을까요? (0) | 2024.05.24 |
| [기술면접준비] Override 와 Overload (3) | 2024.05.23 |
| 기술 면접 준비 - Call by Reference가 무엇이고 보통 어떻게 쓰이나요? (0) | 2024.04.18 |