super heroes en trajes rojo, azul y verde represntando al dto, infraestructuras y dominis en nest

¿Confundes DTOs con Modelos de Infraestructura?

En el ecosistema de Domain-Driven Design (DDD), entender la responsabilidad de cada objeto de datos es vital. Aunque un DTO y un objeto de Infraestructura puedan verse casi idénticos visualmente, sus propósitos y comportamientos son mundos aparte.

Confundirlos es el primer paso hacia un código acoplado y difícil de mantener. Aquí te explico las diferencias clave:

Infraestructura (Modelos de Datos/Entidades de Persistencia)

La capa de infraestructura se encarga de cómo se almacenan o recuperan los datos (por ejemplo, en una base de datos o un servicio externo).

  • Contrato de Almacenamiento: Define la forma exacta en que los datos viven en el "mundo exterior".

  • Manipulación y Transformación: Aquí es donde ocurre la magia. Puedes mapear subestructuras, transformar formatos (como pasar un string a UpperCase()) o gestionar relaciones complejas entre tablas.

  • Composición: Es común que estas estructuras contengan otras subestructuras o colecciones anidadas para representar la integridad de los datos.

DTO (Data Transfer Object)

Como su nombre indica, su único rol es transportar datos entre procesos o capas (por ejemplo, de tu API al frontend).

  • Contrato de Comunicación: Define qué datos va a recibir o enviar tu sistema. Es la "frontera".

  • Inmutabilidad y Simplicidad: Un DTO debe ser plano y sencillo. Su función no es validar lógica de negocio compleja ni transformar datos; su función es ser un contenedor eficiente.

  • Dato vs. Manipulación: El DTO define los datos que se transportan; la Infraestructura define los datos que se manipulan o persisten.

lavour DTO

💡 El ejemplo clave:

Imagina una API:

  1. El DTO recibe el JSON del cliente y asegura que los campos obligatorios estén ahí.

  2. El sistema convierte ese DTO en un objeto de Dominio/Infraestructura.

  3. En esta fase es donde realizas filtros, mapeos o agregas subestructuras antes de guardar en la base de datos.

En resumen: Si vas a transformar, filtrar o anidar lógica de persistencia, estás hablando de Infraestructura. Si solo estás moviendo datos de un punto A a un punto B, usa un DTO.