요약

  • Transaction commit, EntityManager의 flush 시점에 한번에 데이터가 업데이트가 되는 것을 더티 체킹이라고 한다.

내용

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

참고