@Transactional과 save()

mil nil·2023년 1월 20일
0

@Transactional과 save()

  • @Transactional이 있다면 repository에서 사용한다면 save 따로 안 해줘도 더티체크를 통해 자동으로 저장됨 but new로 생선한 객체의 경우 save 해줘야 함, 결제나 이중 보안이 필요한 중요한 곳에서는 따로 저장해주는 것도 좋음

예시

@Transactional
public void order(OrderRequestDto orderRequestDto, Long customerId) {
Product product = productRepository.findById(orderRequestDto.getProductId())
                .orElseThrow(() -> new CustomException(ExceptionStatus.Product_IS_NOT_EXIST));
User customer = userRepository.findById(customerId)
                .orElseThrow(() -> new CustomException(ExceptionStatus.USER_IS_NOT_EXIST));
        // 주문시 고객이 결제.
customer.payForOrder(product.getProductPrice(), orderRequestDto.getQuantity());

product.subtractQuantity(orderRequestDto.getQuantity());
Orders order = new Orders(product.getSellerId(), product.getId(), customerId, orderRequestDto.getQuantity());
orderRepository.save(order); // new로 생성했기 때문에 꼭 필요!
userRepository.save(customer);	// 필요하지 않음
productRepository.save(product); // 필요하지 않음
}

내용 추가 필요

profile
자바 배우는 사람

0개의 댓글