강의

멘토링

로드맵

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

IJILKJ님의 프로필 이미지
IJILKJ

작성한 질문수

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

변경 감지와 병합(merge)

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

작성

·

346

0

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

퀴즈

회원 가입 시 화면 입력 데이터를 엔티티 객체 대신 별도의 Form 객체로 받는 주된 이유는 무엇일까요?

데이터베이스 성능을 최적화하기 위해서

화면 종속적인 데이터나 유효성 검증 로직을 분리하기 위해서

JPA 영속성 컨텍스트와 직접적인 관계를 맺기 위해서

코드의 자동 생성 기능을 활용하기 위해서

답변 1

0

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

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

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

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

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

IJILKJ님의 프로필 이미지
IJILKJ

작성한 질문수

질문하기