인프런 커뮤니티 질문&답변

김민지님의 프로필 이미지

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

준영속 상태

merge

작성

·

307

1

merge는 다음과 같이 동작해요

1. 1차 캐시에서 엔티티를 찾는다

2. 없으면 디비를 조회한다

3. 찾아온 것에 값을 채운다 없으면 새로운 객체를 생성하고 거기에 값을 채운다

4. 그리고 값을 반환한다

근데 merge는 준영속을 영속화시킬때 사용하잖아요

준영속인 개체가 1차캐시에 있을리 없지않나요? 1의 과정을 왜 거치는건가요?

답변 2

2

안녕하세요. 김민지님, 공식 서포터즈 David입니다.

https://tech.junhabaek.net/hibernate-jpa-entitymanager-%ED%95%B5%EC%8B%AC-%EA%B8%B0%EB%8A%A5-%EC%A0%95%EB%A6%AC-3d0d9ff439a2#0f85

윗 글에서 아래 내용을 확인해주세요. detach()를 호출해야만 detached된 객체로 인식하는 게 아님에 중점을 두고 보시면 좋을 것 같습니다.

세번째 상황에서는 Persistence Context에 id가 1L에 해당하는 엔티티가 이미 있는 상태이지만, 새로 생성된 객체가 Persistence Context에 의해 관리되지 않는 상태이므로, 생성된 article 객체는 Detached 상태입니다.

감사합니다.

0

김민지님의 프로필 이미지
김민지
질문자

헉 이 블로그글 엄청 유익하군요 감사합니다