자바/JPA
[JPA] em.persist 와 [repository.save](http://repository.save) 분석
OverTheHorizon3410
2024. 2. 24. 22:30
persist
- 엔티티를 영속성 컨텍스트에서 관리되도록 만든다.
- 해당 메서드 호출시 해당 엔티티의 식별자(PK) 가 생성되며, 해당 식별자는 트랜잭션이 커밋되는 시점에 DB에 반영한다.
@GeneratedValue
같은 식별자 자동 생성 타입으로 설정된 경우에만 PK 를 가져올 수 있음.- 실제 DB에 반영되는 것은 트랜잭션이 커밋되는 시점임!
repository.save
- EntityManager.persist 또는 EntityManager.merge를 호출
- 주어진 엔티티가 새로운 엔티티인지 아닌지를 판단하여 적절한 작업을 수행
- save 메서드는 호출 즉시 데이터베이스에 반영되지 않고, 트랜잭션이 커밋되는 시점에 데이터베이스에 반영
차이점
새로운 엔티티(식별자가 없거나 영속성 컨텍스트에 없는 엔티티)
persist를 호출
이미 존재하는 엔티티
merge를 호출합니다.
Uploaded by N2T