DirtyChecking

황상익·2024년 6월 10일

더티체킹이란 상태 변화가 생긴 정도 = 상태 변경 검사
변화가 있는 모든 엔티티 객체를 데이터베이스는 자동으로 반영

변화가 있다 기준은 최초 조회 상태

JPA에서는 엔티티를 조회하면 해당 엔티티의 조회를 그대로 스냅샷을 만들어 놓는다. 스냅샷과 비교해 다른점이 있다면 UpdateQuery를 dB로 전달

영속성 컨텍스트가 관리하는 엔티티에만 적용

  • detach된 엔티티
  • DB에 반영되기 전 첨 생성된 엔티티 (비영속)

JPA에서는 전체 필드를 업데이트하는 방식을 기본값으로 사용함.
전체 필드를 업데이트하는 방식의 장점은 다음과 같다.

생성되는 쿼리가 같아 부트 실행시점에 미리 만들어서 재사용가능.
데이터베이스 입장에서 쿼리 재사용이 가능하다
동일한 쿼리를 받으면 이전에 파싱된 쿼리를 재사용한다.

만약 필드가 많다면 @DymaicUpdate로 변경 필드만 반영될 수 있도록 설정

출처

profile
개발자를 향해 가는 중입니다~! 항상 겸손

0개의 댓글