Dirty Checking 2

[JPA] 더티 체킹(Dirty Checking)? + 동시성 이슈/제어

1. 더티 체킹 개념더티 체킹(Dirty Checking): JPA의 기능으로, 영속성 컨텍스트에 담긴 엔티티의 상태 변화를 자동으로 감지하여 트랜잭션 커밋 시점에 변경 사항을 데이터베이스에 반영하는 메커니즘. 2. 영속성 컨텍스트(Persistence Context)정의: 엔티티를 영속성 컨텍스트에 담아 관리하는 일종의 캐시.역할: 엔티티의 상태를 추적하고, 변경된 엔티티를 데이터베이스에 자동으로 반영. 3. 엔티티의 생명주기비영속 상태(New/Transient): 엔티티가 영속성 컨텍스트에 담기지 않은 상태.영속 상태(Managed): 엔티티가 영속성 컨텍스트에 담긴 상태. 더티 체킹의 대상.준영속 상태(Detached): 영속성 컨텍스트에서 분리된 상태.삭제 상태(Removed): 엔티티가 삭제된 ..

JPA 2024.06.13

[JPA] 변경 감지(Dirty Checking) 와 병합(merge)

변경 감지(Dirty Checking) 와 병합( merge ) * 준영속 상태? - 영속 상태였다가 더는 영속성 컨텍스트가 관리하지 않는 상태 - 영속성 컨텍스트로부터 분리된 상태 * 준영속 상태를 만드는 3가지 방법 - em.detach(entity) : 특정 엔티티만 준영속 상태로 전환 - em.clear() : 영속성 컨텍스트를 완전히 초기화 - em.close() : 영속성 컨텍스트를 종료 * 준영속 엔티티? - 영속성 컨텍스트가 더는 관리하지 않는 엔티티를 말한다. - 엔티티의 데이터를 가지고 있는 클라이언트 사이드로 넘기기 위한 객체 * 준영속 엔티티를 수정하는 2가지 방법 1. 변경 감지 기능 사용 2. 병합( merge ) 사용 * 변경 감지 기능을 사용하면 원하는 속성만 선택해서 변경할..

JPA 2021.09.16