728x90
반응형
Dirty Checking 이란?
JPA에서 엔티티 객체의 상태 변경을 추적하고, 자동으로 해당 변경사항을 데이터베이스에 반영하는 기능
Dirty Checking은 JPA가 엔티티의 영속성 컨텍스트(Persistence Context)를 관리하는 방식에서 중요한 역할을 함
영속성 컨텍스트는 엔티티의 변경사항을 추적하고, 엔티티 객체와 데이터베이스의 일관성을 유지하기 위해 필요함
save 없이 엔티티의 변경을 감지하여 변경사항을 데이터베이스에 자동으로 반영함
Dirty Checking not working?
service에서 엔티티 변경을 하고 있었다면 메소드 상단에 @Transactional 을 잘 적었는지 확인하기
@Transactional 어노테이션은 JPA에서 트랜잭션을 시작하고 커밋 또는 롤백하는 기능을 제공함
트랜잭션이 시작되면, JPA는 영속성 컨텍스트를 만들고, 이후에 변경사항을 추적하고 데이터베이스에 반영
즉, @Transactional 어노테이션을 사용하지 않으면, Dirty Checking이 작동하지 않음
트랜잭션이 없는 경우에는 영속성 컨텍스트가 없으므로, JPA는 변경사항을 추적할 수 없음
따라서, 엔티티의 변경사항이 자동으로 데이터베이스에 반영되지 않음
반응형
'프로그래밍 > JPA' 카테고리의 다른 글
[JPA] 영속성 이해하기 (0) | 2023.07.12 |
---|---|
[JPA] jpql limit 사용하기 (0) | 2023.05.17 |
[JPA Error] Reason: Validation failed for query for method public abstract 오류 해결 방법 (0) | 2023.04.27 |
[JPA] JPQL alias error 해결 방법 (0) | 2023.04.20 |
[JPA] JPQL 날짜 조회 시 원치않는 타임존이 붙는다면? (0) | 2023.04.19 |