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

궁금이님의 프로필 이미지

작성한 질문수

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

주문 서비스 개발

order의 orderItem

해결된 질문

23.11.07 12:37 작성

·

391

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
이게 주문아이템이 한번에 여러 개 일 수 있으니까,

public Long order(Long memberId, List<OrderItemDto> orderItemsDto){
	List<OrderItem> orderItems = new ArrayList<>();
    
    for( OrderItemDto orderItemDto : orderItemsDto){
		Item item = itemRepository.findOne(orderItemDto.itemId);
        int orderPrice = orderItemDto.price;
        int count = orderItemDto.count;
        
        OrderItem orderItem = OrderItem.createOrderItem(item, orderPrice, count);
        orderItems.push(orderItem);
    }
}

이런 식으로 하는 것도 괜찮죠?

제가 아직 Dto를 잘 몰라서

Data to Object 인 거 같은데 그러면

OrderItem을 만들어서 Dto에 넣어야 하나 생각했더니 그건 왠지 아닌 것 같고.. 컨트롤러 단계에서 엔티티를 꺼내서 써야 하게 될테니..

그냥 Dto를 데이터를 모아 사용하기 편한 오브젝트로 만들어주는 그런 느낌으로..

 

여튼 저런 식으로 하면 잘한건가요?

답변 1

1

codesweaver님의 프로필 이미지

2023. 11. 08. 20:09

안녕하세요. 궁금이님, 공식 서포터즈 코즈위버입니다.

주문을 생성하는 코드를 작성하신것 같아요. 작성하신것처럼 DTO(form) 형태로 사용자의 요청을 받아, 이를 기반으로 엔터티를 생성하는 방식은 일반적인 처리 방법입니다.

코드에서는 엔터티 속성에 .(점) 연산자로 접근하고 있으나 getter 로 접근하는 방법이 적절하며, order() 메서드의 반환타입이 Long 이나 return 구문이 없는 등의 문제도 해결하시면 좋을것 같아요

감사합니다.

궁금이님의 프로필 이미지
궁금이
질문자

2023. 11. 09. 07:09

아 감사합니다!