Spring Data
-
JPA에서 신규 엔티티 처리: EntityManager.persist()와 JpaRepository.save()의 차이점 파악하기JPA 2024. 4. 30. 22:08
동일한 신규 Entity를 생성하여 EntityManager.persist()와 JpaRepository.save()를 통해 영속화 시켰을 때의 동작과 결과가 다를 때가 있다. 이에 대해 알아보자.EntityManager.persist()persist()를 호출할 때 전달된 엔티티 인스턴스 자체가 영속 상태가 되어 변화를 추적한다. 이 메소드는 반환값이 없으며, 저장하는 객체와 영속성 컨텍스트에 들어간 객체가 동일한 참조를 유지한다.EntityManager.merge()merge()를 호출할 때 전달된 분리된(detached) 엔티티 인스턴스의 상태를 복사하여 영속성 컨텍스트에 병합한다. 이 메소드는 새로운 영속 상태의 엔티티 인스턴스를 반환하며, 전달된 원래의 분리된 엔티티는 여전히 분리 상태로 남아 ..