LLevo 4 videos de DTO y sinceramente con un par de minutos del tuyo ya me ha quedado más claro que con el resto. Además el ejemplo sencillo pero correcto para entenderlo. MUCHAS GRACIAS.
@sebaszb41234 жыл бұрын
Mereces 10 veces la cantidad de suscriptores que tienes. Gracias por tu trabajo.
@ManuelZapata4 жыл бұрын
Gracias Sebas por esas palabras! 💪
@MariaCandidaFloresPalma4 ай бұрын
Como..yo.kisi3ra..aser.todo.mlño.k.me.pifen.pero.no.puedo.ayudenme.pa el a Resibir.dinero.emmi. .teléfono.gracias.
@MariaCandidaFloresPalma4 ай бұрын
😊😅
@anthonysosa19003 жыл бұрын
5 minutos y ya me solucionaste el problema, gracias loco
@krlosarthur2 жыл бұрын
No solo me ha parecido útil la información sino que la forma de explicar y presentar es muy acertada. Gracias por la información 😃
@Orozco93013 жыл бұрын
Excelente vídeo Manuel, muchas gracias. Excelente práctica el no implementar lógica de actualización o eliminado dentro del mapper sino dejarla directamente en los servicios. Buen día.
@forrestlyric63783 жыл бұрын
I know Im randomly asking but does someone know of a trick to get back into an instagram account..? I was dumb forgot my password. I love any tricks you can give me!
@devonbriar46273 жыл бұрын
@Forrest Lyric instablaster =)
@Orozco93013 жыл бұрын
@@forrestlyric6378 we're glad dude.
@agustincabrera35513 жыл бұрын
Gran video. Voy a compartirlo para que suba la popularidad de este canal. El contenido es excelente.
@agusmcundom2 жыл бұрын
Gracias! Saludos desde Argentina!
@jhonfredymartinezrealpe95274 жыл бұрын
Excelente video, deja muy claro el concepto de un DTO y su responsabilidad... Lo confundía con un VO, pero ahora todo está más claro.
@ManuelZapata4 жыл бұрын
Excelente Jhon Fredy! Y por cierto, gracias por hacerte miembro Singleton! 🙌
@jealepive4 жыл бұрын
Increíble información, muchas gracias! Gran trabajo!
@ManuelZapata4 жыл бұрын
Gracias Jean!
@juanpablo-mu6wq Жыл бұрын
Excelente video Manuel! Muchas gracias por compartir tu conocimiento
@tovileo_3 ай бұрын
Excelente explicacion y ejemplificación
@juliomejia98244 жыл бұрын
Excelente ejemplo, usamos estos mapper mucho en servicios rest en la empresa donde laboro. Saludos cordiales.
@ManuelZapata4 жыл бұрын
Excelente! Saludos Julio.
@armandomen29444 жыл бұрын
Muy buen video, excellente manera de explicar el por que del DTO con un ejemplo, MUCHISIMAS GRACIAS.
@ManuelZapata4 жыл бұрын
Ha sido un gusto Armando
@mauricioosorio48414 жыл бұрын
Tengo su canal en mis favoritos, complementa a mi auto aprendizaje de Ingeniería de Software.
@ManuelZapata4 жыл бұрын
Genial Mauricio. Muchas gracias!
@cristianmedina5994 жыл бұрын
Me gusto como explicaste el tema y la organizacion del video con el indice de los mismos. Muchas gracias.
@ManuelZapata4 жыл бұрын
Genial @cmm! Es una funcionalidad reciente de KZbin para organizar el video.
@douglasperez37013 жыл бұрын
Excelente video, yo uso automapper y cuando parece que ya lo dominas un poco mas, siempre terminas aprendiendo algo nuevo. Saludos y éxitos!
@enriquerivera8144 жыл бұрын
Excelente Manuel, que pena no se cuentas con algún vídeo de las menores prácticas para la organización de un proyecto .net y el usos de paquetes y nugets es algo de lo que se habla mucho pero importante
@ManuelZapata4 жыл бұрын
Ese es un muy buen tema, Enrique. Lo anoté en mi backlog de ideas de contenido :)
@luismartinez-ff1xu4 жыл бұрын
@@ManuelZapata apoyo la idea, también seria bueno para spring boot, saludos.
@diegoavendano81653 жыл бұрын
Gracias por compartir tu conocimiento, excelente vídeo.
@gastonmarengo14474 жыл бұрын
Muy buena info y Excelente explicacion, gracias. Los uso a los DTO en C# y sinceramente son muy utiles. Me gustaria saber mas de Automapper..... Saludos
@ManuelZapata4 жыл бұрын
Con gusto. Saludos Gaston!
@kevinandres8850 Жыл бұрын
Que buena explicación!
@francotorres27874 жыл бұрын
Muy bien explicado, hasta ahora no entendía bien como plantear un DTO, muchas gracias capo. Podrias hacer un video explicando paso a paso cómo serializar un objeto.
@ManuelZapata4 жыл бұрын
Con gusto Franco! Si estás trabajando en C#, te recomiendo que busques en el canal hdeleon.net. Es posible que allí encuentres algo al respecto. Saludos!
@lvbernal4 жыл бұрын
¡Muy buen video! Me llevo la idea de dejar DTOs y Mappers en proyectos separados. Y también ampliar más el API para retornar DTOs cuando la vista lo amerita, para hacer más liviano el cliente. Cae muy bien cuando el API es muy orientado a acciones o tareas en lugar de a entidades.
@ManuelZapata4 жыл бұрын
Exacto! En ese caso que mencionas los DTO son perfectos porque los acomodas a lo que el proceso requiere. No hay que forzar ninguna entidad para que “calce”.
@SimaDamian3 жыл бұрын
@@edwardlinares Yo tambien me llevo esa idea, siempre uso DTOs en contrato del servicio de dominio (no expongo entidades de dominio sinó DTOs) ahora si hago proyectos aparte no llego a visualizar como quedaría. Pero lo voy a tener en cuenta para proxima implementación. Digo, no se como funcionaria en mis diseños ya que las entidades a mapear no estan publicas como para llevar esa logica a otro proyecto. Tendría que analizarlo.
@d-landjs Жыл бұрын
Super entendible maes!
@hubertg14543 жыл бұрын
Excelente, No estoy tan perdido. pertenezco al mundo de las aplicaciones empresariales ERP y expongo su lógica y datos con DTOs para integraciones usando Web APIs , el automapper es uno de mi favoritos. seria buenisimo si me ayudaras con alguna referencia para poder hacer estas APIs con mejor arquitectura, me toca aprender a separar mejor los proyectos.
@ulrichfladl79952 жыл бұрын
Super cool. Gracias!
@johncerpa37823 жыл бұрын
Excelente explicación, gracias.
@westlymeza83224 жыл бұрын
Muchas gracias Manuel , excelente vídeo
@ManuelZapata4 жыл бұрын
Con mucho gusto West! 🙌
@angelmoralesb3 жыл бұрын
Mapster es espectacular y sencillo!
@SimaDamian3 жыл бұрын
Muy Bueno! Un caso donde si o sí aconsejo usar Dtos es los controllers de una api! tanto las entradas como salida son objetos planos serializables y no el modelo de dominio. Por lo general yo uso el modelo de dominio privado y expongo los contratos de servicios de dominio como DTOs por ende mis controllers o servicios via RPC ya están mapeados y serializables (DTOs). Saludos
@pedromartinez91483 жыл бұрын
Hermano, muchisimas gracias por la info. Eres un crack explicando. Salu2 desde México.
@_jormanespinoza3 жыл бұрын
Excelente! yo utilizo mapstruct en Java para los mapeos
@edustreamimg13 күн бұрын
Hola Manuel. Porque no se usa el dto directamente al interactuar con bd en lugar de usar una entidad? que aporta la entidad?
@oswaldocalderon95353 жыл бұрын
Excelente video, muy bien explicado. Saludos
@loo.989 Жыл бұрын
Yo no entiendo cómo no te encontré antes. Excelente video y explicación. Me estaba costando comprender este tema de los DTO y los Mappers. Creo haber entendido que la finalidad de un Mapeador es convertir un DTO a Entity o viceversa ya que, generalmente, nosotros no exponemos Entidades en nuestros Rest al Cliente, sino que exponemos DTO's por una cuestión de seguridad, cierto?. Ahora, la conversión de un DTO a Entity es porque al exponer un DTO al Cliente, allí es done por ejemplo "llenan un formulario con datos" y para poder almacenar esa info en la BD si o si debemos hacer la conversión de ese DTO a Entity para actualizar o guardar esos datos, cierto?. Es decir, si no existiera el mapeador, esos datos quedarian "flotando" no pudiendose almacenar en ningún lado, correcto?
@compartelo0073 жыл бұрын
Vídeo muy interesante, gracias.
@itmarck4 жыл бұрын
Como desarrollador web no puedo evitar relacionar esto con las API REST, como si éstas hicieran la función de un DTO. ¿Es válido verlo de esa forma? Porque cuando se requiere un reporte, el endpoint de la API devolvería solo los datos necesarios para el reporte. En todo caso se podría ver como que algunos endpoints de una API REST pueden funcionar como DTOs ya que en otros casos es una copia de la entidad tal cual. Corrígeme si no estoy en lo correcto y gracias por el video.
@guillermosolia4 жыл бұрын
Muy buen video!! Saludos desde Argentina
@ManuelZapata4 жыл бұрын
Gracias Guillermo!
@ricardotovar45972 жыл бұрын
Hola, una consulta ,El DTO facilita el trabajo al frontend ya que no va a tener que hacer muchas solicitudes sino que con una sola consulta ya podra mostrar en pantalla la informacion, caso contrario al backend que el tiene que realizar todas esa logica :?
@daniveloper3 жыл бұрын
Pregunta, al utilizar el acceso a las listas en el metteingdto no está ejecutándose una consulta quitando la responsabilidad única? Por lo que veo se utiliza EF.
@MrLeonardonam4 жыл бұрын
Hola Manuel,Mi historia con los DTOs empezo cuando lei de ellos en un libro de arquitectura java,pero los he usado en su mayoria con php(Laravel). Desconocia de las librerias que mencionas al ultimo.Les dare un vistazo. Muy buenos temas en el canal. Saludos.
@ManuelZapata4 жыл бұрын
Excelente Leonardo! Esa es la idea de estos videos. Que despierten la curiosidad por profundizar en los temas.
@gelordtube3 жыл бұрын
he encontrado proyectos donde utilizan también objetos ViewModel que se encontraban en el lado de cliente (MVC C#) es buena practica utilizar DTOs junto con las clases ViewModel?
@adolfogarcia78815 ай бұрын
Se puede meter dto en el hexagonal a pesar q ya tiene modelo y entidad?
@carloscastillo91543 жыл бұрын
Hola maestro gracias por tu video, muy bueno. Una duda, Si tengo varias DTOs para una misma entidad "SalesMan", que muestran informacion distinta, por ejemplo, Un DTO para mostrar ID, Nombre y Fecha, y otro DTO para mostrar NroOficina, Departamento. ¿Cual seria la convencion para nombrar esas clases DTOs para diferenciarlas?
@ManuelZapata3 жыл бұрын
Carlos, yo creo que la mejor convención es la que te permita identificar fácilmente cuál es el propósito de cada uno.
@lisandromendez80053 жыл бұрын
Excelente... Sabes? he ido aprendiendo esto por separado porque me he encontrado con problemas y busco y busco y así voy resolviendo.
@yordanaquino65902 жыл бұрын
Buenos días estimado Manuel, se puede decir que el Dto es como las vistas de la base de datos?
@oscarmera35804 жыл бұрын
Excelente Manual, yo utilizo orika y dozer en Java pero siempre he tenido la duda si utilizar un mapper puede ser menos eficiente en cuanto a rendimiento que hacerlo manualmente . Saludos
@ManuelZapata4 жыл бұрын
Yo creo que eso depende de la complejidad del mapeo, Oscar.
@wilwazka2957 Жыл бұрын
¿Y los dto se usan al aplicar DDD? Según se ve, son independientes del paradigma.
@williammartin49683 жыл бұрын
Muchas gracias por este gran video. Agradezco una consulta. ¿DTO sería equivalente a aplicar el patrón CompositeEntity en la capa de persistencia, o qué diferencias tienen? Gracias.
@ManuelZapata3 жыл бұрын
Hola Martín. Honestamente, no sabia que te referías con Composite Entities hasta qyue busqué el concepto. Un DTO no es lo mismo. Es algo mucho más genérico.
@selvin_medina4 жыл бұрын
Hola buen día Manuel Zapata, muchas gracias, tienes vídeos sobre el patrón unit of work?
@ManuelZapata4 жыл бұрын
Aún no tengo videos de Unit of Work, Selvin!
@sc-nc6bb2 жыл бұрын
los DTO tambien pueden ser Interfaces?
@diegobejardelaguila86142 жыл бұрын
Osea el DTO por ejemplo te serviria para crear una tabla con detalle de ventas donde esta el igv, la cantidad, precio de descuento, etc. Cosas que no estan directamente en la base de datos si no ya cuando es procesada la informacion. ? Este podria ser uno de los usos de los dtos?
@mr.moment25482 жыл бұрын
basicamente el DTO es una capa de abstraccion de la entidad(es)
@santiagotriana47263 жыл бұрын
Buen video 👍. Es claro, a pesar que un poco largo (innecesariamente)
@JuanM-ck4jg3 жыл бұрын
Hola , sabes como podria hacer si yo tengo 2 objetos, el primero es Estudiante con codigo, Nombre , apellido, nota , usuarioregistro y usurioActualizo (Este primero tiene los 3 valores) y el segundo solo tiene codigo, nota y usurioActualizo, se me origino este problema debido a que cuando envio los datos del objeto con menos parametros , mi objeto origen pierde los datos de usuarioregistro , nombre y apellido.(Se me origino ya que yo deseo actualizar ese registro por entity y obviamente al actualizar me registra los otros como null :C , me ayudarias mucho respondiendo ojo que es un ejemplo parecido al que tengo ) Saludos.
@CarlosMisaelAzabacheSabando4 жыл бұрын
Si he utilizado antes los DTO, pero la verdad no le hallaba mucho sentido. Ya con tu genial explicación queda claro y ya entendiendo bien para que sirven y sus bondades, con mucha seguridad ya los empezaré a utilizar. Gracias por compartir.
@ManuelZapata4 жыл бұрын
De eso se trata Carlos, de entender el trasfondo de estos patrones y cuando tiene sentido usarlos 🙌
@MrJpfdesign2 жыл бұрын
Muy buen video, cual es la diferencia que tiene con un ViewModel? Saludos
@ManuelZapata2 жыл бұрын
Te refieres a un ViewModel de MVVM?
@edustreamimg4 жыл бұрын
Hola Manuel. Una duda un repositorio se entendería como un servicio?. Cuales son los límites que definen a un servicio? El servicio es una estructura formalmente definida en UML?
@ManuelZapata4 жыл бұрын
Un repositorio tiene la responsabilidad del acceso a datos. Un servicio puede tener múltiples significados dependiendo de la arquitectura.
@miguelnunez86594 жыл бұрын
Hola Manuel, muchas gracias por compartir, si lo uso en c# y vb .NET, la duda que me queda en el ejemplo mostrado del mapeador no deberías controlar la entidad si es null ???
@ManuelZapata4 жыл бұрын
Hola Miguel. Tienes razón. Habría que validar la entidad. Saludos!
@jhonnyjamifernandez4474 жыл бұрын
Yo no estoy asiendo servicios rest pero necesito muchas veces serializar las entidades que me trae el EntityFramework, pero cuando se actualiza alguna tabla del EF se me actualiza todo y se me pierde la anotacion de serializable en las clases, hay alguna manera de solucionar esto o deberia usar DTO?. Muchas gracias.
@ManuelZapata4 жыл бұрын
Ni idea como solucionarias el problema, Jhonny. Yo por lo general trato de no tocar clases generadas justamente por ese problema que mencionas.
@maximilianominetto5244 жыл бұрын
Lo he usado para un proyecto que tengo, vos sabés que al Mapper lo conocía como Converter en otras fuentes, es bueno saber si nombre original, más si es Martin Fowler. Ah y uso una clase abstracta que implementa la conversión de las listas de dto y entidades y delego a las concretas que implementen su mapeo. Saludos.
@ManuelZapata4 жыл бұрын
Excelente lo de la clase abstracta, Maximiliano! De casualidad también le pones genéricos para indicar el tipo de los DTO y de las entidades?
@maximilianominetto5244 жыл бұрын
@@ManuelZapata No tengo el código pero creo que si Mapper en java
@victorwillhuber3 жыл бұрын
mira, listo
@eduardobeltran7721 Жыл бұрын
Este concepto de DTO es el resultado de Store Procedure con resultados equivalentes y que puede ser probado de la DB. Porque no se encuentran ejercicios y/o ejemplos con SP ?
@ManuelZapata Жыл бұрын
Se podría aplicar con procedimientos almacenados sin ningún problema. Por qué no se encuentran ejemplos con SP? Supongo que por el origen del concepto. Esto lo ves más fácilmente en lenguajes como Java o C#, pero no significa que no aplique a otros ambientes.
@aguspe5322 жыл бұрын
Hola! muy buen video! ¿Hay alguna explicación en Python? Slds!!
@ManuelZapata2 жыл бұрын
La explicación es independiente del lenguaje, Agus. Te puedes apoyar en las data classes para implementarlos.
@aguspe5322 жыл бұрын
@@ManuelZapata Gracias!
@clibercastillo54894 жыл бұрын
Buenaso, gracias por el video, es normal tener varios DTOs para una entidad? Estoy construyendo una API REST y al hacer un GET no quiero tener el id de la entidad, pero para el POST si lo necesito, Entonces crearía dos DTOs?
@ManuelZapata4 жыл бұрын
Hola Cliber. Por supuesto. Ese es un enfoque válido: tener varios DTOs por entidad. Ese es el trade-off que menciono en el video debes balancear. Tienes un DTO grande con muchas propiedades, o DTOs pequeños con solo las propiedades específicas del caso.
@clibercastillo54894 жыл бұрын
Gracias Manuel, saludos.
@sebastianpineda993 Жыл бұрын
Qué significa o a qué hace referencia cuando habla de ¨dominio¨?
@tecnoaprendizcursosdeprogr48704 жыл бұрын
Dónde puedo encontrar un curso de analisis y diseño de sistemas? Sabrán de alguna página? Gracias!
@ManuelZapata4 жыл бұрын
Busca a Likecomtic en Udemy. Ellos tienen un curso de arquitectura de software.
@tecnoaprendizcursosdeprogr48704 жыл бұрын
@@ManuelZapata Muchas gracias, no eres egoista y hablas de otras plataformas, eres un verdadero informático!! :)
@ManuelZapata4 жыл бұрын
Con todo gusto!
@RexGanesAdventures4 жыл бұрын
Si dto termina siendo lo mismo que el objeto del dominio, hago que el API devuelva el objeto del dominio o creo un dto igual?
@ManuelZapata4 жыл бұрын
Yo crearía de igual forma un DTO. Con eso me aseguro que el objeto de dominio no salga de la capa de acceso a datos. Alguna veces esto es necesario porque no siempre el objeto de dominio es serializable. Esto me ocurre en un proyecto en Python en que estoy trabajando.
@eliassilva72283 жыл бұрын
Muy bien explicado, los DTO use mucho en mi ultimo proyecto y sin embargo el concepto no lo tenia muy claro.
@iturraldec Жыл бұрын
los DTO si , en PHP, pero no sabía que esa técnica tenía una termino
@antoniogonzalezrestrepo284 жыл бұрын
Excelente explicación, la mejor diría yo. Muchas gracias por compartir tu conocimiento.
@ManuelZapata4 жыл бұрын
Gracias por tus palabras, Antonio!
@markosace4 жыл бұрын
Excelente browwwww
@ManuelZapata4 жыл бұрын
🙌
@fabriziopastor61463 жыл бұрын
¿Alguien me puede explicar que sígnica poder serializar un objeto ? :( lo que encuentro en internet me resulta algo confuso :'v
@tusbackingtrackes2 жыл бұрын
Un DTO hace lo mismo que los API Resources de Laravel?
@ghss50883 жыл бұрын
El DTO es perfecto para implementarlo en proyectos no muy grandes y más si no vas a documentar algo así con swagger (que en base al objecto de entrada y de salida forma su mensajería). Pongamos el caso que utilizamos un DTO para 4 endpoint diferentes y un día se nos da la gana de querer monetizar nuestra API y decidimos implementarle swagger, nuestro cliente verá un montón de variables de entrada y de salida (ya que serán estos DTO), y no sabrá qué sobra y qué no.... sin hablar que por parte del código esto se vuelve insostenible en el tiempo, al tener una entidad que no sabremos cuando ocupa cierto atributo y cuando no (debido a que es muy genérico).
@ManuelZapata3 жыл бұрын
Gracias por el aporte, Gonzalo. Muy interesante. Deja varias cosas a analizar.
@javierchiquitoavellan16663 жыл бұрын
El mapeador sería como una clase de utilidad, verdad?
@vcordero20103 жыл бұрын
Excelente explicación Manuel, una opción para el Mapeo pudiera ser el uso de Generics ? en vez delegar en otra librería esta responsabilidad ? Saludos.
@Lucaskpp73 жыл бұрын
u earn a sub mi amigo
@saksahgx40112 жыл бұрын
LIKE :D
@Coderoll4 жыл бұрын
Yo siempre he pensado que las entidades deben de quedarse en la capa de acceso a datos y por ejemplo en un API lo que debemos exponer es un DTO ya sabes eso de SRP
@ManuelZapata4 жыл бұрын
Exactamente Oscar! Coincido contigo.
@CarlosRodriguez-ww1fv4 жыл бұрын
llámenme loco, pero yo prefiero mapear mis entidades a mano sin hacer contextos con orm's
@ManuelZapata4 жыл бұрын
No estás loco, Carlos! Muy desarrolladores lo hacen así.
@lires5754 жыл бұрын
Yo abusé de los pobres DTO. Por eso, ahora odio hacer Mappers 😂😂
@ManuelZapata4 жыл бұрын
Jajaja suele pasar.
@carlosdavila49994 жыл бұрын
Trabajar de esa manera con el tiempo el código se acopla muy fácilmente y duplicas mucho código, es mejor tener proyecciones de la información al contexto que lo requiera...
@piratamorgan29983 жыл бұрын
Confirmo que quité tu bigote con Photoshop, y quedas mejor sin bigote. Saludos desde medallo 😝