![[Java] 25. Stream API (1)](https://image.inblog.dev?url=https%3A%2F%2Finblog.ai%2Fapi%2Fog%3Ftitle%3D%255BJava%255D%252025.%2520Stream%2520API%2520%281%29%26logoUrl%3Dhttps%253A%252F%252Finblog.ai%252Finblog_logo.png%26blogTitle%3Djay0628&w=3840&q=75)
프로젝트 생성

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")- compileOnly = 컴파일할때만 작동한다.
3. 비지니스 파악
- 상품 목록 화면

- 상품 상세 보기 화면

- 주문 상세보기 (주문번호2)
- 상품의 옵션이 아니라 order의 옵션임

- 주문 상세보기 (주문번호1)
- 주문번호 1번은 상품1번, 상품2번 별로
- or1, p1, p1안에 있는 orOption1, orOption2, p2, p2안에 있는 orOption3 필요함!
- or1, p1, p2는 orOption이 들고 있어서 orOption3가지로 OrderDtailDTO를 만들어내면 됨!
- OrderDtailDTO는 리스트가 아니다




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