HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🍗
[New] 조규현팀
/
🐾
DailyLog
/
JPA Save, Merge와 Persist

JPA Save, Merge와 Persist

태그
JPA
날짜
May 10, 2022 03:50 AM
해결 상태
완료
Thrower
JPA에서 영속상태와 영속 상태가 아닌 객체를 비교하는 방법은 ID값이 들어가 있느냐 아니냐로 나뉜다.
 
JPA의 save함수 내부에 isNew() 함수가 id가 있는지 없는지 구별한 후 isNew()가 true면 persist, 아니면 merge를 진행한다.
 
persist는 save로 넘어온 매개변수 객체 그대로 반환을하고, merge는 또 다른 새로운 객체를 만들어 뱉어낸다.
 
그러므로 Domain B = save(A); 에서 A와 B는 merge일 경우 다르고 persist일 경우 A와 B가 같다.
 
그러므로 일종의 규약으로, 모든 코드에서는 반환된 B의 객체를 사용하는 것으로 약속하면 비교적 편하다.