본문 바로가기

개발관련/SPRINGBOOT

JPA Dirty checking

728x90

Spring Data JPA는 Spring Framework와 Java Persistence API (JPA)를 결합하여 데이터베이스와의 상호 작용을 쉽게 처리할 수 있도록 지원하는 기술입니다. Dirty checking(더티 체킹)은 Spring Data JPA가 제공하는 중요한 기능 중 하나입니다.

Dirty checking은 JPA 엔티티의 변경 사항을 자동으로 감지하는 메커니즘입니다. 엔티티를 조회한 후에 변경되는 모든 필드를 추적하고, 이후에 엔티티를 저장할 때 변경된 필드만 실제로 업데이트합니다. 이는 개발자가 직접 업데이트된 필드를 식별하고 수동으로 업데이트 쿼리를 작성하는 수고를 덜어주며, 데이터베이스 트랜잭션을 최적화할 수 있게 합니다.

Dirty checking은 다음과 같은 방식으로 동작합니다.

  1.엔티티 조회: JPA는 엔티티를 데이터베이스에서 조회하고, 조회한 엔티티를 영속 상태로 관리합니다.

  2.변경 감지: 영속 상태의 엔티티를 수정하면 JPA는 해당 변경 사항을 추적합니다. 변경 사항은 엔티티의 각 필드에 대한       원본 값과 수정된 값의 비교를 통해 확인됩니다.

  3.트랜잭션 커밋: 트랜잭션이 커밋되면 JPA는 변경 사항을 데이터베이스에 반영합니다. 이 때, 변경된 필드만 업데이트         쿼리에 포함됩니다.

Dirty checking은 개발자가 별도의 코드를 작성하지 않아도 엔티티의 변경 사항을 자동으로 추적하고 업데이트하는 편리한 기능입니다. 하지만 모든 필드의 변경 여부를 확인하므로 엔티티에 많은 필드가 있거나 복잡한 연산을 수행하는 경우 성능에 영향을 줄 수 있습니다. 따라서 성능 요구사항에 맞게 적절하게 사용해야 합니다.

Spring Data JPA에서 Dirty checking은 내부적으로 제공되는 기능으로, 별도의 설정이나 코드 변경 없이 자동으로 동작합니다. 이를 통해 엔티티의 변경을 효율적으로 관리하고 데이터베이스와의 상호 작용을 단순화할 수 있습니다.

728x90

'개발관련 > SPRINGBOOT' 카테고리의 다른 글

Springboot ExceptionHandler  (0) 2023.06.26
Test Code에서 tearDown이란?  (0) 2023.06.17
@Transactional  (0) 2023.06.17
AP로그와 JBoss로그  (0) 2023.06.15
SPRINGBOOT  (0) 2023.06.13