변경 감지란, 트랜잭션 커밋(종료)시 영속화된 엔티티에서 가지고 있었던 최초 정보(스냅샷)와 바뀐 엔티티 정보를 비교해서 바뀐 부분을 update해주는 기능이다.
JPA에서는 엔티티를 조회하면 해당 엔티티의 조회 상태를 스냅샷을 만든다.
(*스냅샷: DB에서 데이터를 가져와 영속성 컨텍스트에 저장해 엔티티를 영속화할 때의 최초 정보들)
트랜젝션이 끝나는 시점에 이 스냅샷과 비교해서 엔티티에 변경이 있으면 Update Query가 발생한다.
Dirty Checking 대상은 영속성 컨텍스트가 관리하는 엔티티에만 적용된다.
준영속, 비영속 상태의 엔티티는 대상에 포함되지 않는다.
ex) Detech된 엔티티(준영속), DB에 반영되기 전 처음 생성한 엔티티(비영속)
'BACK > JPA' 카테고리의 다른 글
[JPA] Querydsl 중급 문법 (프로젝션, 동적 쿼리, 벌크 연산, SQL function) (1) | 2024.03.15 |
---|---|
[JPA] Querydsl 기본 문법 (검색, 조회, 정렬, 페이징, 집합, 조인등) (0) | 2024.03.15 |
[JPA] Querydsl 프로젝트 환경설정 - 설정과 검증 (0) | 2024.03.15 |
[JPA] Executing an update/delete query 에러 해결 (0) | 2022.08.31 |
[JPA] Entity List를 DTO리스트로 바꾸기 (0) | 2022.08.01 |