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

김민국님의 프로필 이미지

작성한 질문수

실전! 스프링 데이터 JPA

스프링 데이터 JPA 구현체 분석

save 질문드립니다.

작성

·

277

0

jpa 커리큘럼 듣고있는 학생입니다.

 

첫 커리큘럼 강의 merge를 쓰지말라고 하셨는데(*1),

스프링 데이터 jpa의 save를 보면(SimpleJpaRepository구현체) merge를 사용하고 있습니다.

 

그러면 실무에서 스프링 데이터 jpa를 사용할 때

save기능을 사용하여야 하는것인지 사용하지 말아야 하는것인지 가이드 라인이 있을까요?

 

*1.DB에서 데이터를 가지고 오기때문에 sql이 한번 나가는 문제, DB에서 가지고 온 데이터 수정할 때 일정 필드값이 누락될 경우 누락된 값은 변경감지와는 달리 없어지기 때문 등등의 문제로

답변 1

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 김민국님

스프링 데이터 JPA의 save는 기본적으로 em.save를 호출하고, 식별자가 이미 존재하는 경우에 한해서 em.merge를 사용합니다.

그러니까 데이터를 처음 저장할 때는 em.save가 호출되는 것이지요.

JPA에서 데이터를 변경할 때는 

JPA 활용1에서 설명드린 것 처럼, 가급적 merge를 사용하기 보다는 변경 감지(dirty checking)를 사용하는 것이 맞습니다.

감사합니다.

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

감사합니다 영한 선생님!

최고이십니다!!