관심쟁이 영호

[#11.2] Spring Boot ㅣ 스프링 부트 ㅣ 주문 리포지토리 및 서비스 클래스 개발 본문

Bank-End/인프런- Spring 공부

[#11.2] Spring Boot ㅣ 스프링 부트 ㅣ 주문 리포지토리 및 서비스 클래스 개발

관심쟁이 영호 2021. 4. 16. 01:55
반응형

이번 시간은 주문 Repository, Service를 구현할 예정이다.

 

1. 주문 Repository

// OrderRepository.class

@Repository
@RequiredArgsConstructor
public class OrderRepository {

    private final EntityManager em;

    public void save(Order order){
        em.persist(order);
    }

    public Order findOne(Long id){
        return em.find(Order.class, id);
    }

    // public List<Order> findAll(OrderSearch ordersearch){}


}

- Order를 저장하는 Save 매서드, 1개를 찾는 findOne 매서드를 추가해주었다.

- 검색기능을 수행해야하는 findAll은 추후에 구현한다.

 

2. 주문 Service

// OrderService.class

@Service
@Transactional(readOnly = true)
@RequiredArgsConstructor
public class OrderService {

    private final OrderRepository orderRepository;
    private final MemberRepository memberRepository;
    private final ItemRepository itemRepository;
    //주문
    @Transactional
    public Long order(Long memberId, Long itemId, int count){

        //엔티티 조회
        Member member = memberRepository.findOne(memberId);
        Item item = itemRepository.findOne(itemId);

        //배송정보 생성
        Delivery delivery = new Delivery();
        delivery.setAddress(member.getAddress());

        //주문 상품 생성
        OrderItem orderItem = OrderItem.createOrderItem(item, item.getPrice(), count);

        //주문 생성
        Order order = Order.createOrder(member, delivery, orderItem);

        //주문 저장
        orderRepository.save(order);

        return order.getId();

    }
    //취소
    @Transactional
    public void cancelOrder(Long orderId){

        // 주문 엔티티 조회
        Order order = orderRepository.findOne(orderId);

        // 주문 취소
        order.cancel();


    }
    //검색
    
    /*
    public List<Order> findOrders(OrderSearch orderSearch){
        return OrderSearch;
    }
     */
}

- 이전에 다른 Service와 같은 구조이다.

- 검색기능은 새롭게 다른 기능이므로, 이 다음에 다뤄볼 것이다.

 

300x250
Comments