인프런 커뮤니티 질문&답변
order 메소드 질문
작성
·
181
0
OrderService의 order메소드에서 memberId, itemId를 인자로 받았는데도 member 와 item 을 조회하는 것에 의문이 들어서 질문드립니다.
생 쿼리 작성시에는 조회없이 저장할 수 있지만 영속성 컨텍스트에 해당 값이 없다면 2번의 조회 쿼리가 더 나가게 될텐데 JPA를 사용하면 어쩔 수 없는건가요? 이 문제가 실무에서 감수할만한 정도인지 아니면 다른 최적화 방법이 있는지 궁금합니다.
퀴즈
주문 취소 시 발생하는 주요 비즈니스 로직은 무엇일까요?
주문 상태가 '배송 중'으로 변경됩니다.
주문 상품의 재고가 감소합니다.
취소된 주문 상품의 재고가 복구됩니다.
배송이 완료된 주문도 자유롭게 취소 가능합니다.
답변 1
0
안녕하세요, 오지훈 님. 공식 서포터즈 codesweaver 입니다.
.
전달 받은 값이 멤버와 아이템의 아이디뿐이기에 멤버 전체 데이터(객체), 아이템 전체 데이터를 얻어오기 위해 다시한번 조회하는것입니다.
.
보통 영속성에 대한 조회는 서비스 혹은 리포지토리에서 발생합니다. 그리고 이 둘의 호출은 한 트랜잭션 안에서 발생합니다. 그래서 만약 서비스와 리포지토리 두 곳에서 모두 데이터를 조회하는 일이 발생한다 하더라도 실제 쿼리는 한번만 날아가게 됩니다. 둘 중 먼저 호출한 쪽에서 영속성으로 해당 데이터를 등록하게 되며, 이 데이터는 트랜잭션이 끝날때까지는 유효하기 떄문입니다.
.
감사합니다.





