ProductService의 updateProduct 로직 질문입니다.
556
投稿した質問数 1
updateProduct 로직을 보면, 맨 첫줄에
productPort.getProduct로 조회를 해온 뒤
product.update(~~~)로 변경을 하면, 변경 감지가 일어날텐데
굳이 save를 호출하신 이유가 뭐에용??
回答 2
0
저도 궁금하긴 하네요. 제 생각은,
변경 감지를 위해서는 트랜잭션을 만들어야 하는데(@Transactional 등), 그럴 필요가 없어 보이기 때문이라고 생각합니다.
굳이 명시적 트랜잭션을 통해서 조회와 수정을 트랜잭션으로 묶을 필요가 없지 않은가 생각됩니다.
0
안녕하세요, 인프런 AI 인턴이에요.
updateProduct 메서드에서 getProduct로 조회를 해온 뒤에 변경사항을 update할 때 변경 감지가 일어날텐데 굳이 save를 호출하는 이유는 두 가지가 있습니다.
첫 번째는 만약 변경사항이 없다면 update 메서드가 호출되지 않습니다. 따라서 save를 통해 변경사항이 있을 때만 DB에 저장할 수 있습니다.
두 번째는 product.update(~~~) 메서드에서 update 쿼리를 수행할 때 미리 로딩된 영속성 컨텍스트 내의 엔티티와의 차이를 감지하면서 변경 사항을 찾아 update 쿼리를 만들게 됩니다. 하지만 만약 영속성 컨텍스트와 불일치하는 엔티티가 있다면, JPA에서는 그 객체의 변경 내역을 추적할 수 없기 때문에 save를 호출하여 새로운 엔티티를 생성해줌으로써 문제를 해결해줄 수 있습니다.
이처럼 save를 호출하는 이유는 두 가지 이유가 있을 수 있습니다. 이번 예제에서도 두 가지 이유가 모두 있을 수 있으니 참고해주세요. 감사합니다.
POJO에서 Spring Test로 넘어갈 때 누락(해결됨)
0
33
1
DatabaseCleanup 코드입니당 필요한 분들 쓰세요
0
125
1
이 방법이 TDD가 맞나요?
0
1109
2
POJO로 개발했는데 비즈니스 로직을 로깅해야 할 경우, 어떻게 해야 할까요?
0
337
1
generate -> add Dependency 이 메뉴가 안보이던데, 어떻게 보이게할까요?
0
355
1
실무 Asserta 사용여부가 궁금합니다.
0
455
1
테스트 코드 내의 지역변수를 final로 선언하는 이유가 궁금합니다.
0
530
1
통합테스트와 단위 테스트
0
964
1
의존성 및 설계? 부분 질문드립니다.
0
400
1
테스트 더블
0
394
1
리뷰반영 강의에서 shortcut ctrl + esc 는 어떻게 설정하나요?
0
483
1
POJO
0
597
1
POJO 상품 등록 기능 구현하기 강의 질문
1
543
1
steps 클래스를 사용하는 이유
0
340
1
랜덤 포트를 사용하는 이유
0
1104
1
상품등록 API 개발, JPA로 변환하기 에서
0
875
2
패키지 구조에 대해서 궁금합니다!
0
645
1
BeforeEach 를 하위 클래스에서 다시 사용하는것에 대해서 질문 드립니다.
1
562
1
TRUNCATE TABLE 시 AUTO_INCREMENT 컬럼 1로 초기화
2
3498
1
POJO로 개발 후 스프링으로 전환, 이후 JPA 전환하는 이유
4
1283
1
TestRestTemplate 대신에 RestAssured를 사용하는 이유가 있을까요?
0
1190
1
API 테스트로 전환하기
0
1019
1
코드 스타일에 대해서 질문드립니다.
2
1138
1
혹시 강의 중에 나오는 플러그인 좀 알 수 있을까요
0
1221
1

