Dirty는 Entity 데이터의 변경된 부분을 의미하는데, 더티 체킹이란 영속성 컨텍스트가 관리하는 Entity의 상태를 감지하고, 변경된 부분이 있다면 자동으로 트랜잭션이 끝나는 시점에 데이터베이스에 반영하는 기능입니다.
그렇다면 엔티티의 생명주기는 어떻게 될까요?
순수한 객체 상태로, 영속성 컨텍스트와는 관련이 없는 상태입니다.
Member member = new Member();
EntityManager를 통해 엔티티를 영속성 컨텐스트에 저장해 영속성 컨텍스트가 관리하는 상태입니다.
em.persist(member); // 객체 저장
영속성 컨텍스트에 저장되어있다가 분리된 상태를 의미합니다.
em.detach(member); // 특정 엔티티를 분리한다.
em.close(); // 영속성 컨텍스트 닫기
em.clear(); // 영속성 컨텍스트 초기화
엔티티를 영속성 컨텍스트와 데이터베이스에서 삭제한 상태를 의미합니다.
em.remove(member);