• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

save 질문드립니다.

21.11.22 07:22 작성 조회수 196

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)를 사용하는 것이 맞습니다.

감사합니다.

김민국님의 프로필

김민국

질문자

2021.11.23

감사합니다 영한 선생님!

최고이십니다!!