Patrón: objeto de transferencia de datos (DTO) |

Поделиться
HTML-код
  • Опубликовано: 7 сен 2024
  • DTO son las siglas de Data Transfer Object, o en español Objeto de transferencia de datos, y es un patrón arquitectural para incrementar el rendimiento de las aplicaciones cliente / servidor (por ejemplos aplicaciones REST) evitando múltiples llamadas.
    * Aprende más en nuestro blog: sacavix.com/
    * Apóyanos en Patreon: / sacavix_tech
    (Con tu apoyo en Patreon accedes a ventajas exclusivas como directos, preguntas y respuestas en el chat, respuestas a tus dudas y acceso a nuestro libro "Patrones para la implementación de una arquitectura basada en microservicios".
    Tiene como finalidad la creación de objetos planos con una serie de atributos que puedan ser enviados o recuperados del servidor en una sola invocación.
    Un DTO puede contener información de múltiples fuentes o tablas y concentrarlas en una única clase simple.
    #patrones #microservicios #rest #dto

Комментарии • 40

  • @ThePomelo09
    @ThePomelo09 2 года назад +14

    Muy buen contenido! para aportar a este patron que es muy util, tambien existe la clasificacion de ellos como "Abused DTO's" versus "Strict DTO's". Los abused dto's los vemos cuando usan un mismo dto para hacer todas las operaciones create, update etc quedando (dependiendo del contexto) campos en null del dto al momento de recibir el request, por eso hay que evitarlos. En cambio es preferible crear un dto's por casuística y cada uno que tenga los campos que realmente utiliza.

    • @SACAViXTech
      @SACAViXTech  2 года назад

      Excelente comentario, gracias @ZonaCode

  • @wilfredodice7972
    @wilfredodice7972 Год назад +8

    La otra ventaja del patrón dto es que evita exponer campos de los modelos que no deberían exponerse

  • @salsalazar7646
    @salsalazar7646 3 месяца назад

    Muy buen vídeo, bien explicado! Felicidades

  • @dcloki789
    @dcloki789 2 месяца назад

    excelente clase, gracias

  • @cesaresp9585
    @cesaresp9585 2 года назад +1

    Muchas gracias por sus videos, me son muy útiles!!!

  • @sabrinapatri4267
    @sabrinapatri4267 Год назад

    Muy buena Explicación ! Muchas gracias !

  • @DeatherTem
    @DeatherTem 2 года назад

    Como me hubiese gustado saber esto cuando recien estaba empezando, manejaba todo con mapas

  • @ijeanpierrebp
    @ijeanpierrebp 9 месяцев назад

    Muy buena explicación!

  • @col_yom
    @col_yom Год назад

    Gracias por tus videos tan concretos y exactos me hubiera gustado código practico

    • @SACAViXTech
      @SACAViXTech  Год назад +1

      Hola, gracias por comentar en el vídeo Proyecciónes ponemos ejemplos de este patrón. Saludos

  • @josefernandouseche6472
    @josefernandouseche6472 2 года назад

    Excelente Maestro. Muchísimas gracias.

  • @SIULVERPRO
    @SIULVERPRO 2 года назад

    Excelente contenido esperamos ls próxima parte

    • @SACAViXTech
      @SACAViXTech  2 года назад +1

      Gracias por tu comentario, la próxima parte es el vídeo llamado Proyecciones, gracias 👍

  • @favioamarillamino4665
    @favioamarillamino4665 2 года назад +1

    Espero con ansias el video de como implementarlo

    • @SACAViXTech
      @SACAViXTech  2 года назад

      Pronto lo estrenaremos Favio, gracias por ser parte de la comunidad 👍

  • @Lonchanick
    @Lonchanick 11 месяцев назад +4

    Hola!
    Se supone que las dos tablas "Persona" y "Dirección" estan relacionadas por un campo foraneo (Id de persona en la tabla direcciones), Pregunto; por qué tendría que hacerse DOS peticiones si con un query tipo join podría obtener los datos que necesito?
    Saludos,
    Gracias por el aporte!

    • @furciorifa
      @furciorifa 5 дней назад +1

      Es buen approach, pero ahora imagínate qué por alguna razón debes separar tú modelo de Address a un microservicio, ya la query perdería sentido, con el patrón dto además obtienes en una sola petición los datos que necesitas, en este caso user y address son directos, pero imagínate qué un user tiene múltiples address o viceversa, nos traería información que no necesitamos por lo tanto se sobrecarga la request

  • @emma97pr
    @emma97pr 2 года назад +1

    Buenos videos, podrías explicar la diferencia entre DAO y Repositorio

    • @emanuelsotomayor6474
      @emanuelsotomayor6474 2 года назад

      Son lo mismo, sólo tienen diferente nombre.

    • @emma97pr
      @emma97pr 2 года назад

      @@emanuelsotomayor6474 Gracias tocayo

  • @loeizkr
    @loeizkr 2 года назад

    El Dto lo hace bien😎

  • @emanuelsotomayor2894
    @emanuelsotomayor2894 2 года назад

    Excelente video, ¿Cuando se viene la segunda parte?

  • @LuisMercado-
    @LuisMercado- 2 года назад

    Hola,buenas noches,me gusta mucho su contenido,que opina de c# para programar en backend,me gusta porque es estable, porque su soportes es microsoft a diferencia de los nuevas librerias y framework que viven saliendo nuevos van pasando de moda con el tiempo,ejemplo de angular fue un boom y ya react le paso, etc.,considero que debemos utilizar herramientas estables en el tiempo.

    • @SACAViXTech
      @SACAViXTech  2 года назад +1

      Hola Luis, una cosa son los lenguajes y otra los framewroks/librerias, seguramente frameworks basados en C# han pasado de moda, como mismo han pasado muchos de javascript/typescript. Ahora creo no soy experto en C# está en el top Net Core. Igual más allá de los marcos de trabajo y lenguajes lo importante es tener las bases para poder adaptarse y usar en cada situación lo mas conveniente. C# es un muy buen lenguaje y tiene al igual que Java o Node para todo, no solo backend. En realidad es una cuestión de gusto y necesidad del mercado.

    • @LuisMercado-
      @LuisMercado- 2 года назад

      Excelente,muchas gracias.

  • @rodrigoch2291
    @rodrigoch2291 2 года назад +1

    Hola Yoandy muy muy interesante el uso de este patron me dejaron las cosas mas claras, pero ¿tienen algo en común los "DTO" con los llamados "Bean" o son diferentes?

    • @SACAViXTech
      @SACAViXTech  2 года назад +2

      No, no tienen que ver, un Bean es un objeto normalmente Singleton que va al ApplicationContext para luego ser inyectado con Autowired regularmente y tiene lógica de negocio, un DTO es por lo general un POJO solo usado para transferir datos.

  • @tionico5199
    @tionico5199 2 года назад +1

    Hola mi duda es para la solución 2, tengo que hacer 2 consultas a la base de datos? Xq necesito info de 2 tablas

    • @SACAViXTech
      @SACAViXTech  2 года назад

      Hola Nico, eso lo resuelves con una Proyección, mira el vídeo de Proyecciones que está en el canal , ahí está la solución 😃

  • @jesuscangalaya5450
    @jesuscangalaya5450 Год назад

    Hola , como se si tengo que mappear mis DTOs unidireccional o bidireccional ? alguna pagina que me explique ?
    Gracias de antemano !

  • @BrattScorsa
    @BrattScorsa 2 года назад

    Estimado amigo, no me termina de quedar claro el rol de los DTO´s. Osea entiendo que es una forma de desacoplar el código, pero el core del modelo está precisamente en las entidades que nacen de las necesidades de la aplicación, por tanto, ¿por qué apuntar desde Angular al DTO y no a las entidades modelo?

    • @SACAViXTech
      @SACAViXTech  2 года назад

      Hola Bratt, el DTO lo usamos cuando no necesitamos devolver todas los campos del modelo, sino solo una parte de ellos. Es por un tema de performance fundamentalmente.

    • @BrattScorsa
      @BrattScorsa 2 года назад

      @@SACAViXTech Muchas gracias tu respuesta. Me quedo clarísimo.

    • @tionico5199
      @tionico5199 2 года назад

      @@SACAViXTech para esta acción entonces en el service tener el método obtenerCominada del tipo uniónDto donde se tiene que hacer por ejemplo tabla1.getOne(id1) y tabla2.getOne(id2) y aquí sacar la info que necesitamos y crear un objeto nuevo llamado combinación y esta tipo de combinación es lo que retornamos?

    • @SACAViXTech
      @SACAViXTech  2 года назад

      @@tionico5199 esa es una vía, pero no es muy eficiente porque estás haciendo dos llamadas a la base de datos, si existe relaciones entre las tablas, lo mejor es usar una Proyección, en el vídeo titulado Proyecciones explico como se hace y las vías que existen

  • @Creatika360
    @Creatika360 2 года назад

    Hola Yoandy, me gustaria comprar el libre de microservicios que tienes publicado, que precio tiene y por donde lo puedo adquirir?

    • @SACAViXTech
      @SACAViXTech  2 года назад

      Hola Creatika, puedes unirte a nuestra página de Patreons y ahí está disponible para los colaboradores del canal. Sino te es posible no importa, alcanzarme en LinkedIn cómo @yoandypv y enviame un mensaje por ahí y hablamos.