강의

멘토링

커뮤니티

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

IJILKJ님의 프로필 이미지
IJILKJ

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

변경 감지와 병합(merge)

변경감지일 때 save도 넣으면 어떻게 되나요?

작성

·

345

0

@Transactional 어노테이션에 의해서
메서드 종료시에 스프링이 알아서 변경된 부분을 DB에도 적용시켜주는데 메서드 마지막에 repository.save() 같은 코드도 추가하면
어떻게 되나요?
 
상관이 없는건지 아님 이중 저장된다던지 ..

답변 1

0

안녕하세요, 김정민 님. 공식 서포터즈 codesweaver 입니다.
.
save()가 em.persist()를 포함한 프로세스라고 하면,

save()가 호출될때 영속성 컨텍스트에 해당 객체가 캐시됩니다.

그리고 아직 트랜잭션이 종료되지 않았으므로 이 객체는 영속성으로 유지됩니다.

그리고 트랜잭션이 종료될 때까지 어떤 변경이 발생하지 않으면 그대로 영속성에서 제거됩니다.

save() 호출 이후에 저장한 객체의 값 변경(dirty check)이 발생한다면 그 변경사항이 DB에 반영됩니다.
.
감사합니다.

IJILKJ님의 프로필 이미지
IJILKJ

작성한 질문수

질문하기