본문 바로가기
Back-End/JPA

JPA) 병합 merge

by 어렵다어려웡 2022. 3. 11.

준영속 상태의 엔티티를 영속상태로 만드려면 merge 를 사용한다.

 

새로운 영속상태의 엔티티를 반환한다.

 

 

 

  1. merge 실행
  2. 파라미터로 넘어온 준영속 엔티티 식별자값으로 1차캐시에서 조회
    1. 만약 1차캐시에 없으면 DB를 조회한다음 1차 캐시에 저장
  3. 조회한 영속 엔티티에 이전값을 채워넣는다.

member와 mergeMember는 다른 인스턴스기 떄문에 보통은 병합시 사용했던

변수를 참조해서 하는것이 좋다.

  • 비영속 병합

비영속 상태의 엔티티도 영속상태로 변경할 수 있다.

 

정리

병합은 파라미터로 넘어온 엔티티의 식별자 값으로 영속성 컨텍스트를 조회하고 없으면 DB를 조회한다.

 

만약 DB에도 없다면 새로운 엔티티를 생성하여 병합한다.

 

병합은 영속상태 여부를 판단하지 않는다.

그저 식별자 값으로 조회가 가능하면 불러서 병합시키고 없으면 생성해서 병합시킨다.

== save or update

 

 

'Back-End > JPA' 카테고리의 다른 글

JPA) Eager, Lazy 로딩  (0) 2022.03.12
JPA ) 연관관계 매핑  (0) 2022.03.11
JPA) 준영속 상태  (0) 2022.03.11
JPA) Flush  (0) 2022.03.11
JPA) 변경 감지 (Dirty Check)  (0) 2022.03.11