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





