요약
- Transaction commit, EntityManager의 flush 시점에 한번에 데이터가 업데이트가 되는 것을 더티 체킹이라고 한다.
내용
- JPA는 엔티티 매니저가 엔티티를 저장/조회/수정/삭제를 한다.
- 엔티티 매니저의 메서드에서는 저장, 조회, 삭제까지만 있고 수정은 없다.
- 수정은 더티 체킹, Diry Checking을 지원한다.
- 더티 체킹은 트랜잭션 안에서 엔티티의 변경이 일어나면, 변경 내용을 자동으로 데이터베이스에 반영한다.
- 데이터베이스에 변경 데이터를 저장하는 시점은 아래와 같다.
- Transaction commit
- EntityManager flush
- JPQL 사용
- 영속성 컨택스트(Persistence Context) 안에 있는 엔티티를 대상으로 더티 체킹이 일어난다.
- 더티 체킹이 일어나는 환경은 2가지 조건이 충족되어야한다.
- 영속 상태(Managed) 안에 있는 엔티티인 경우
- Transaction 안에서 엔티티를 변경하는 경우