작성
·
285
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)를 사용하는 것이 맞습니다.
감사합니다.
감사합니다 영한 선생님!
최고이십니다!!