Dto → . toEntity()
만약에 서비스로직에서 new Product(request, sellerId)
이면 new Product(request,sellerId) 를 담게 되면
Entity 안 까지 불필요하게 request(Dto)를 끌고 가는것은 결합도는 떨어지고 의존성이 높아져 좋지 않다.
🔑 대안으로
Entity class 에서 toEntity 및 builder 이용
builder로 하면 좋은이유는 파라미터 값들이 많아지게되면 타입도 겹치게 될텐데
생성자의 경우
타입으로 분류하기 때문에 값들이 섞일수 있다.
그렇기 때문에 builer로 셋하여 가독성 및 안정성을 보장할 수 있다.
엔티티가 가지고 있는 속성값으로 변경해준다면 셋도 필요없고 유지보수도 좋아진다고 함
@Transactional
public void orderCancelingProcessing(Long orderId, Long sellerId) {
Orders order = orderRepository.findById(orderId).orElseThrow(() -> new CustomException(ExceptionStatus.Order_IS_NOT_EXIST));
User customer = userRepository.findById(order.getCustomerId()).orElseThrow(() -> new CustomException(ExceptionStatus.USER_IS_NOT_EXIST));
Product product = productRepository.findById(order.getProductId()).orElseThrow(() -> new CustomException(ExceptionStatus.Product_IS_NOT_EXIST));
유저서비스 - 프로덕트레포 ( 유저가 상위레벨로 보이는데, 유저서비스에서 프로덕트레포를 많이 쓴다면 유저서비스 말고
프로덕트서비스에 하는게 좋다. )
repository를 직접 호출하는 것보다는 해당 서비스에 메서드를 만들어 서비스를 호출 하는것이
로직 유추 등등 좋다.