[Java] 25. Stream API (1)

김주희's avatar
Apr 24, 2025
[Java] 25. Stream API (1)
프로젝트 생성
notion image

1. 상황

유저와 판매자 판매자가 상품 등록 (product) 상품마다 옵션이 있음 (색상 - 하얀색 티, 초록색 티, 사이즈 등) product 등록하고 productOption 등록하고 product가 아닌 productOption을 주문하는 것 productOption 2개 구매하기 -> 1개의 주문 주문번호 1번이 만들어져야 그걸 fk로 가지는 orderOption이 만들어지는데 productOption 그대로 만들어짐 그대신 product_id가 아닌 order_id를 fk로 가짐
현재 db와 상관없이 완전 orm으로 되어있음

2. 의존성 관리 도구

라이브러리를 repository에 모아둠? 의존성 관리 도구 = Gradle, Maven Gradle, Maven => 라이브러리를 다운받아주고 빌드해줌 원래는 라이브러리 직접 각 사이트에서 다운받아야 하지만 중간에 Repo(ex원래 project lombok 사이트가 있음) 있고 거기에 라이브러리 등록되어있음 빌드 = 프로젝트를 만들 때 라이브러리를 같이 묶어서 컴파일 해야 실행파일이 나옴 빌드 패스 설정 = 컴파일하고 라이브러리를 가져와서 연결시켜야 됨 .jar
 
// https://mvnrepository.com/artifact/org.projectlombok/lombok compileOnly("org.projectlombok:lombok:1.18.38")
  1. compileOnly = 컴파일할때만 작동한다.
 
 

3. 비지니스 파악

 
  1. 상품 목록 화면
    1. notion image
  1. 상품 상세 보기 화면
    1. notion image
  1. 주문 상세보기 (주문번호2)
    1. 상품의 옵션이 아니라 order의 옵션임
notion image
  1. 주문 상세보기 (주문번호1)
    1. 주문번호 1번은 상품1번, 상품2번 별로
      1. notion image
    2. or1, p1, p1안에 있는 orOption1, orOption2, p2, p2안에 있는 orOption3 필요함!
      1. or1, p1, p2는 orOption이 들고 있어서 orOption3가지로 OrderDtailDTO를 만들어내면 됨!
      2. OrderDtailDTO는 리스트가 아니다
notion image
notion image
notion image
js에서 컬렉션으로 crud 했던거 그대로 배울거예요? entity를 뿌릴 수 없고 무조건 dto로 컬렉션으로 만들엇 리스트의 프로덕트 dto를 만드는 것이 목적이다 p2options = >> p2와 op3, op4가 담긴 dto를 만들어야 됨 OneToMany 안걸면 p2와 p2options 를 컬렉션를 객체를 toString하는게 아니라 컬렉션을 json으로 변환해서 출력
package ex01; public class OrderDetailDTO { private Integer orderId; private List<ProductDTO> products; @Data public static class ProductDTO { private Integer productId; private List<OrderOptionDTO> orderOptions; @Data public static class OrderOptionDTO { private Integer orderoptionId; private String orderOptionName; private Integer orderQty; private Integer orderTotalPrice; public OrderOptionDTO (OrderOption orOption) { this.orderoptionId = orOption.getId(); this.orderOptionName = orOption.getOptionName; this.orderQty = orOption.getQty; this.orderTotalPrice = orOption.getOrderTotalPrice; } } public ProductDTO (Product product, List<OrderOption> orderOptions) { this.productId = product.getId(); List<OrderOptionDTO> orderOptionList = new ArrayList<>(); for (OrderOption orderOption : orderOptions){ OrderOptionDTO orderOptionDTO = new OrderOptionDTO (orderOption); orderOptionList.add(orderOptionDTO); } this.orderOptions = orderOptionList; } } public OrderDetailDTO (Order order, List<ProductDTO> products){ this.orderId = order.getId; List<ProductDTO> productList = new ArrayList<>(); for (Product product: products){ ProductDTO productDTO = new ProductDTO(product); productList .add(productDTO); } this.products = productList ; } }
Share article

jay0628