728x90
반응형

Dirty Checking 이란?

JPA에서 엔티티 객체의 상태 변경을 추적하고, 자동으로 해당 변경사항을 데이터베이스에 반영하는 기능

Dirty Checking JPA 엔티티의 영속성 컨텍스트(Persistence Context) 관리하는 방식에서 중요한 역할을 함

영속성 컨텍스트는 엔티티의 변경사항을 추적하고, 엔티티 객체와 데이터베이스의 일관성을 유지하기 위해 필요함

save 없이 엔티티의 변경을 감지하여 변경사항을 데이터베이스에 자동으로 반영함

 


Dirty Checking not working?

service에서 엔티티 변경을 하고 있었다면 메소드 상단에 @Transactional 을 잘 적었는지 확인하기

@Transactional 어노테이션은 JPA에서 트랜잭션을 시작하고 커밋 또는 롤백하는 기능을 제공함

트랜잭션이 시작되면, JPA는 영속성 컨텍스트를 만들고, 이후에 변경사항을 추적하고 데이터베이스에 반영

, @Transactional 어노테이션을 사용하지 않으면, Dirty Checking 작동하지 않음

트랜잭션이 없는 경우에는 영속성 컨텍스트가 없으므로, JPA 변경사항을 추적할 없음

따라서, 엔티티의 변경사항이 자동으로 데이터베이스에 반영되지 않음

반응형
복사했습니다!