Spring Data JPA의 save() 메소드
엔티티의 상태에 따라 persist (새로운 엔터티 저장) 또는 merge (기존 엔터티 업데이트)를 내부적으로 호출합니다.
즉, 엔터티의 식별자 값이 null이거나 존재하지 않는 경우 새로운 엔터티로 간주하여 persist를 호출하고, 식별자 값이 존재하는 경우에는 merge를 호출하여 업데이트를 수행합니다.
변경 감지(Dirty Checking)
엔터티가 영속성 컨텍스트에 의해 관리되는 상태(영속 상태)에서, 트랜잭션이 끝나는 시점에 엔터티의 변경 사항을 데이터베이스에 반영하는 기능입니다.
이는 @Transactional 어노테이션이 붙은 서비스 레이어에서 주로 발생합니다.
따라서, 영속 상태의 엔터티를 수정하는 경우 별도의 save() 호출 없이도 변경 사항이 데이터베이스에 반영될 수 있습니다. 이때, 엔터티가 영속 상태여야 한다는 점이 중요
'Spring > DB연동' 카테고리의 다른 글
| JPA 즉시로딩(EAGER), 지연로딩(LAZY) (0) | 2025.04.02 |
|---|---|
| JPA기본( EntityManager, PersistenceContext ) (0) | 2025.04.02 |
| @Transactional 01 (0) | 2025.02.23 |
| entity에서 원시타입 vs Wrapper클래스 (0) | 2025.02.22 |
| JPA Entity에 Validation (0) | 2025.02.22 |