Spring Data JPA와 같은 ORM 구현체에 대한 자료를 보거나 다루게 되다 보면
더티체킹이라는 단어를 종종 듣게 됩니다.
Dirty : 변경을 감지
Checking : 검사
이라는 뜻으로 조합하여 본다면 변경을 감지한다고 생각하고 접근하면 될것 같습니다.
Spring Data JPA와 같은 ORM 구현체를 다루다 보면 자주 등장하는 용어입니다.
JPA(Java Persistence API) 를 사용하면서 더티체킹과 트랜잭션의 관계에 대해서 알고 있지 않으면, 비즈니스 로직에서 다루는 엔티티 데이터가 꼬이는 경우가 발생하게 됩니다.
데이터가 꼬이는 경우를 방지하려면,
더티체킹(Dirty Cheking)이 어떤 상황에 사용이 되고 있는지 이해할 필요가 있어 준비하였습니다.
대신에 수정에 해당하는 더티체킹을 지원합니다.
더티 체킹은 Transaction 안에서 엔티티의 변경이 일어나면, 변경 내용을 자동으로 데이터베이스에 반영하는것이 JPA의 특징입니다.
더티 채킹이 발생할때 충족되어야 하는 조건은 아래 두가지 조건이 있습니다
1. 영속 상태(Managed) 안에 있는 엔티티인 경우
2. Transaction 안에서 엔티티를 커밋 하는 경우
그리고 Transaction은 두 가지 방식으로 사용할 수 있습니다