BACK/JPA

[JPA] Dirty Checking(변경 감지)

연듀 2023. 4. 11. 14:00

 

 

변경 감지란, 트랜잭션 커밋(종료)시 영속화된 엔티티에서 가지고 있었던 최초 정보(스냅샷)와 바뀐 엔티티 정보를 비교해서 바뀐 부분을 update해주는 기능이다. 

 

 

JPA에서는 엔티티를 조회하면 해당 엔티티의 조회 상태를 스냅샷을 만든다.

 

(*스냅샷: DB에서 데이터를 가져와 영속성 컨텍스트에 저장해 엔티티를 영속화할 때의 최초 정보들)

 

트랜젝션이 끝나는 시점에 이 스냅샷과 비교해서 엔티티에 변경이 있으면 Update Query가 발생한다.

 

Dirty Checking 대상은 영속성 컨텍스트가 관리하는 엔티티에만 적용된다. 

준영속, 비영속 상태의 엔티티는 대상에 포함되지 않는다.

ex) Detech된 엔티티(준영속), DB에 반영되기 전 처음 생성한 엔티티(비영속)