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
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.
Excelente comentario, gracias @ZonaCode
La otra ventaja del patrón dto es que evita exponer campos de los modelos que no deberían exponerse
Muy buen vídeo, bien explicado! Felicidades
excelente clase, gracias
Muchas gracias por sus videos, me son muy útiles!!!
Muy buena Explicación ! Muchas gracias !
Como me hubiese gustado saber esto cuando recien estaba empezando, manejaba todo con mapas
🤣🤣🤣🤣🤣
Muy buena explicación!
Gracias por tus videos tan concretos y exactos me hubiera gustado código practico
Hola, gracias por comentar en el vídeo Proyecciónes ponemos ejemplos de este patrón. Saludos
Excelente Maestro. Muchísimas gracias.
Excelente contenido esperamos ls próxima parte
Gracias por tu comentario, la próxima parte es el vídeo llamado Proyecciones, gracias 👍
Espero con ansias el video de como implementarlo
Pronto lo estrenaremos Favio, gracias por ser parte de la comunidad 👍
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!
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
Buenos videos, podrías explicar la diferencia entre DAO y Repositorio
Son lo mismo, sólo tienen diferente nombre.
@@emanuelsotomayor6474 Gracias tocayo
El Dto lo hace bien😎
Excelente video, ¿Cuando se viene la segunda parte?
Si, porfavor la segunda parte
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.
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.
Excelente,muchas gracias.
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?
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.
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
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 😃
Hola , como se si tengo que mappear mis DTOs unidireccional o bidireccional ? alguna pagina que me explique ?
Gracias de antemano !
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?
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.
@@SACAViXTech Muchas gracias tu respuesta. Me quedo clarísimo.
@@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?
@@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
Hola Yoandy, me gustaria comprar el libre de microservicios que tienes publicado, que precio tiene y por donde lo puedo adquirir?
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.