inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Trong thực tế! Tìm hiểu về TDD thông qua phát triển API đặt hàng sản phẩm Spring Boot

Triển khai chức năng sửa đổi sản phẩm POJO

ProductService의 updateProduct 로직 질문입니다.

556

2dongyeop

1 câu hỏi đã được viết

0

 updateProduct 로직을 보면, 맨 첫줄에

productPort.getProduct로 조회를 해온 뒤
product.update(~~~)로 변경을 하면, 변경 감지가 일어날텐데

굳이 save를 호출하신 이유가 뭐에용??

tdd spring-boot pojo 소프트웨어-테스트 api

Câu trả lời 2

0

Jinwoo Cheon

저도 궁금하긴 하네요. 제 생각은,

변경 감지를 위해서는 트랜잭션을 만들어야 하는데(@Transactional 등), 그럴 필요가 없어 보이기 때문이라고 생각합니다.

굳이 명시적 트랜잭션을 통해서 조회와 수정을 트랜잭션으로 묶을 필요가 없지 않은가 생각됩니다.

0

communityai8509

안녕하세요, 인프런 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

563

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