yml > oBootJpaApi01에서 복붙
기본 패키지4개 만들기.
oBootJpa03 에서 domain, domain.item 클래스 복붙.
이전파일 -> API로 만들기.
✔ 연관관계를 확실히 하기.
@OneToMany
를 쓸 경우 mappedBy를 걸어주기. (읽기 전용)@ManyToOne
이 있는 OrderItem.java
가 주인이다.// 주문상태 [ORDER, CANCEL]
@Enumerated(EnumType.STRING)
private OrderStatus status;
@OneToMany(mappedBy = "order")
private List<OrderItem> orderItems = new ArrayList<>();
package com.oracle.oBootJpaApi02.repository;
import javax.persistence.EntityManager;
import org.springframework.stereotype.Repository;
import lombok.RequiredArgsConstructor;
@Repository
@RequiredArgsConstructor
public class OrderRepository {
private final EntityManager em;
}
package com.oracle.oBootJpaApi02.service;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.oracle.oBootJpaApi02.repository.OrderRepository;
import lombok.RequiredArgsConstructor;
@Service
@Transactional
@RequiredArgsConstructor
public class OrderService {
private final OrderRepository orderRepository;
}
유저가 필요한 정보만 넘기기 위해 따로 만듬
package com.oracle.oBootJpaApi02.controller;
import java.time.LocalDateTime;
import com.oracle.oBootJpaApi02.domain.Address;
import com.oracle.oBootJpaApi02.domain.Order;
import com.oracle.oBootJpaApi02.domain.OrderStatus;
import lombok.Data;
@Data
public class SimpleOrderDto {
private Long orderId;
private String name;
private LocalDateTime orderDate; //주문시간
private OrderStatus orderStatus;
private Address address;
// 유저가 필요한 정보만 넘기기 위해 따로 만듬
public SimpleOrderDto(Order order) {
orderId = order.getId();
name = order.getMember().getName();
orderDate = order.getOrderDate();
orderStatus = order.getStatus();
address = order.getDelivery().getAddress();
}
}
package com.oracle.oBootJpaApi02.controller;
import java.util.List;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import com.oracle.oBootJpaApi02.service.OrderService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@RestController
@RequiredArgsConstructor
@Slf4j
public class OrderRestApiController {
private final OrderService orderService;
@GetMapping("/restApi/ordersV21")
public List<SimpleOrderDto> ordersV21(){
List<SimpleOrderDto> result = null;
log.info("OrderRestApiController /restApi/ordersV21 START ============");
result = orderService.serviceOrdersV21();
return result;
}
}
SERVICE로 이동
유저가 필요한 정보만 넘기기 위해 따로 만듬
만들고 service로 넘기기
@Service
@Transactional
@RequiredArgsConstructor
@Slf4j
public class OrderService {
private final OrderRepository orderRepository;
public List<SimpleOrderDto> serviceOrdersV21() {
log.info("OrderService serviceOrdersV21 START ===========");
List<Order> orders = orderRepository.findAll();
return null;
}
유저가 필요한 정보만 넘기기 위해 따로 만듬
package com.oracle.oBootJpaApi02.repository;
import java.util.List;
import javax.persistence.EntityManager;
import org.springframework.stereotype.Repository;
import com.oracle.oBootJpaApi02.domain.Order;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@Repository
@RequiredArgsConstructor
@Slf4j
public class OrderRepository {
private final EntityManager em;
public List<Order> findAll() {
log.info("OrderRepository findAll START ============");
List<Order> orderList = em.createQuery("select o from Order o", Order.class) //Order는 객체이름
.getResultList();
return orderList;
}
}