본문 바로가기
Spring Framwork

Dirty Checking

by orioncsy 2023. 5. 7.

Dirty Checking

개념

Dirty checking

  • 트랜잭션 내에서 Entity에 변경 사항이 일어났을 때 자동으로 DB에 반영

작동 원리

JPA dirty checking

  • JPA에서는 트랜잭션 내에서 Entity에 변경 사항이 일어났을 때 자동으로 update 쿼리를 날려 반영

동작 방식

  • JPA에서 트랜잭션이 실행
  • Entity를 조회
  • 조회된 Entity의 스냅샷 저장
  • Entity의 데이터 변경
  • 트랜잭션 커밋 후 스냅샷과 현재 Entity를 비교
  • 변경 사항을 update 쿼리로 구성 및 실행

특징

실행 대상

  • dirty checking 검사 대상은 영속성 컨텍스트에 저장된 Entity
  • 준영속, 비영속 Entity는 DB에 반영되지 않는다.

@DynamicUpdate

  • dirty checking은 변경된 Entity의 모든 내용을 update 쿼리에 담는다.
  • Entity에 많은 필드가 존재하는 경우 비효율적일 수 있다.
  • @DynamicUpdate를 사용하면 변경된 필드만 update할 수 있다.

Reference

https://gyoogle.dev/blog/web-knowledge/spring-knowledge/%5BSpring%20Data%20JPA%5D%20Dirty%20Checking.html

'Spring Framwork' 카테고리의 다른 글

Transaction Propagation  (0) 2023.04.01
JPA 영속성 컨텍스트  (0) 2023.03.31
CORS Solution  (0) 2023.03.29
Bean Life Cycle  (0) 2023.03.27
Bean Scope  (0) 2023.03.19