1. 컨트롤러에서 DTO vs Command 객체 사용


  1. 컨트롤러에서의 DTO 사용:
  2. Command 객체:

추천 관행

예시 워크플로우

다음은 컨트롤러에서 이 프로세스를 구현하는 방법의 예입니다:

java코드 복사
@RestController
@RequestMapping("/orders")
public class OrderController {

    private final OrderService orderService;

    @Autowired
    public OrderController(OrderService orderService) {
        this.orderService = orderService;
    }

    @PostMapping
    public ResponseEntity<CreateOrderResponse> createOrder(@RequestBody CreateOrderRequest request) {
        // DTO를 Command로 변환
        CreateOrderCommand command = new CreateOrderCommand(request.getProductId(), request.getQuantity());
        UUID orderId = orderService.createOrder(command);

        return ResponseEntity.ok(new CreateOrderResponse(orderId));
    }
}

결론

컨트롤러에서 DTO를 사용하고 이를 Command 객체로 변환한 후 애플리케이션 레이어로 전달하는 것은 널리 인정받는 관행입니다. 이 접근 방식은 웹 레이어와 비즈니스 로직 간의 명확한 분리를 유지하며, 애플리케이션 아키텍처의 유지보수성과 적응성을 높이는 데 기여합니다​ (Baeldung)​​ (Home | JavaInUse)​​ (blog.allegro.tech)​.