⚔️ DAO vs. DTO: Batalla de Patrones en Diseño de Software 🛠️

Sdílet
Vložit
  • čas přidán 5. 08. 2024
  • Explora con nosotros la batalla entre los patrones de diseño DAO y DTO en este tutorial detallado. 🚀 Aprende cuándo y cómo utilizar cada uno con un ejemplo práctico que te guiará paso a paso. Ideal para desarrolladores que buscan optimizar sus habilidades en acceso y transferencia de datos. 🛠️
    ¡Dale like y suscríbete para más contenido sobre programación efectiva! 🎓 Deja tus preguntas o sugerencias en los comentarios.
    🔶Repositorio: github.com/UnProgramadorNaceO...
    🔶Videos sugeridos:
    ⭐️Mapeo Maestro: Java Mappers: • Mapeo Maestro: Domina ...
    ⭐️Video guia Spring security completa: • 🔒✨ Spring Security 6: ...
    ⭐️Video relaciones con JPA: • Dominando las Relacion...
    ⭐️Video direcciones con JPA: • Spring Data JPA: Tipos...
    ⭐️Video patron BUILDER: • Patrones de diseño: Bu...
    🔔 Redes sociales 🔔
    🔶Facebook:
    profile.php?...
    🔶Instagram:
    / unprogramadornaceofficial
    🔶 Sígueme en LinkedIn: www.linkedin.com/comm/mynetwork/discovery-see-all?usecase=PEOPLE_FOLLOWS&followMember=unprogramadornace
    🔶 Contacto:
    unprogramadornace@gmail.com
    ⭐Donaciones⭐
    paypal.me/unprogramadornace?c...
    🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟
    Si este video ha sido de ayuda para ti, por favor ayudame tú a mí con un poderoso like al video y suscribiéndote al canal para seguir creando más contenido como este.
    🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟
    📚 Temario:
    00:00 Introducción
    00:54 Explicacion teorica
    10:00 Inicio del proyecto
    11:20 Configurar base de datos
    16:18 Creacion de controller - Inicio de DTO
    30:05 Creacion de service
    42:45 Creacion de DAO
    01:17:16 Pruebas a nuestro CRUD
    No olvides que un programador en Spring con DTO y DAO nace programando en Spring con DTO y DAO. Práctica todo lo que puedas que la meta está a la vuelta de la esquina, solo debes ir por ella.
    Si tienes alguna pregunta no dudes en escribirla en los comentarios.
    Saludos!
    #java
    #PatronesDeDiseño
    #dao
    #dto
    #springboot3
    #springframework

Komentáře • 88

  • @brayanruizmarreros2107
    @brayanruizmarreros2107 Před 2 měsíci +6

    Empecé viendo un video tuyo el de Spring Security 6 y ahora ya no puedo dejar de ver los demás videos por la calidad de explicación y empeño que se nota que le pones, gracias profe

    • @unprogramadornace
      @unprogramadornace  Před 2 měsíci +2

      Gracias por tus palabras y por tomarte el tiempo de comentar.
      ¡Saludos!

  • @razorcod5
    @razorcod5 Před 3 měsíci +9

    Excelente video, pero no seria mejor comparar el patrón DAO con el Repository porque ambos patrones interactúan con la base de datos. El DTO es más para transportar datos.

    • @unprogramadornace
      @unprogramadornace  Před 3 měsíci +15

      Hola, es muy válida tu sugerencia. El tema es que muchas personas se confunden entre DAO y DTO; de hecho, por eso tuve que hacer el video, porque muchas no entienden bien la diferencia. Entiendo perfectamente a lo que te refieres, pero para alguien que no conoce absolutamente nada de esto, le puede costar entender que estos dos patrones funcionan de manera distinta. Aunque la diferencia entre repository y DAO no es tan grande, simplemente con DAO haces las cosas tú mismo y con Repository lo hace Spring. ¡No hay más que decir! Jejeje.
      Saludos.

  • @alfredoalas7710
    @alfredoalas7710 Před 3 měsíci +1

    Muy buena explicacion para entender como funciona de fondo el repository, a veces hacemos las cosas en automatico y no entendemos el funcionamiento atras del codigo gracias!!!!

  • @brauliomariano
    @brauliomariano Před 3 měsíci +3

    Excelente tutorial, favor indicar la documentación que hace la recomendación del porque no usar @Data en la entidad. Muchas gracias profesor.

  • @hcoronado
    @hcoronado Před měsícem

    Justo lo que consultaba en otro de tus videos, con esto se responde a mi consulta que dejé por allá xD. Gracias✌️

  • @ronaldgarciavazquez8232
    @ronaldgarciavazquez8232 Před 3 měsíci

    Aún sin verlo pero estoy seguro que ayudará mucho y a muchos, gracias por los aportes.

  • @sandrocordova8730
    @sandrocordova8730 Před 2 měsíci

    Muchas gracias!!!, me enseñaron esto en mi instituto pero de forma muy superrficial , gracias a tu video ahora lo entiendo mejor :D

  • @HackZ2266
    @HackZ2266 Před 3 měsíci +1

    Excelente explicación brother!
    La verdad muy buenas prácticas 😊

  • @santiagovalenciarios2197
    @santiagovalenciarios2197 Před měsícem

    Santi parce, sos un mounstro, que tipo tan calidoso🎉

  • @miguelcarhuas3183
    @miguelcarhuas3183 Před 3 měsíci

    Justo lo que necesitaba agregar a la arquitectura hexagonal en springboot, gracias

  • @moiseslink
    @moiseslink Před 2 měsíci

    Excelente Video! una explicación muy clara! Muchas Gracias

  • @henryvega4914
    @henryvega4914 Před 3 měsíci +1

    Buen video , cuando un video de spring-data-jpa-entity-graph para consultas dinamicas y evitar tantos querys en el back.

    • @unprogramadornace
      @unprogramadornace  Před 3 měsíci

      Hola, gracias por comentar. Voy a tener en cuenta tu sugerencia.
      Saludos.

  • @camiloforero4996
    @camiloforero4996 Před 3 měsíci

    Muchas gracias! Fue muy util la explicación

  • @MaiaDoroshenko
    @MaiaDoroshenko Před 3 měsíci

    Como siempre una explicación increíble siempre tus videos son de lo mejor, gracias por el tiempo y la dedicación

  • @hazlosipuedes
    @hazlosipuedes Před 3 měsíci

    Todavía no lo veo y ya le di like... Se que es una super clase... Cómo siempre.

  • @alex92garcia
    @alex92garcia Před 29 dny

    Gran video, en un video solo, he aprendido a utilizar bien el DTO y DAO, y descubierto la existencia de Lombok, ahora me tocara mirarme tu video sobre Lombok.
    Muchas gracias!!

  • @leningarcia4607
    @leningarcia4607 Před 2 měsíci

    Excelente contenido, de verdad me ha aclarado las dudas, soy fan de tu canal! Muchas gracias!! Un saludo

  • @oscarmonroe8087
    @oscarmonroe8087 Před 2 měsíci

    Excelente explicación, gracias

  • @Car105M3nd0za
    @Car105M3nd0za Před 2 měsíci

    Woww Tremendo video, muchas gracias por el contenido

  • @LucianoMarcelo27011965
    @LucianoMarcelo27011965 Před 3 měsíci

    Excelente explicacion , muchas gracias

  • @leonardopaez894
    @leonardopaez894 Před 8 dny

    Excelente video, amigo, soy nuevo aprendiendo Spring y te doy las gracias porque me has hecho entender en menor tiempo mucho más de lo que pude haber entendido antes, eres literalmente un maestro. Sobre el video, solo me quedó la inquietud que no validaste las excepciones al momento de hacer el CRUD en la API Rest al finalizar el video.

    • @unprogramadornace
      @unprogramadornace  Před 7 dny +1

      Hola, muchas gracias por tu comentario. Este video solamente trataba sobre la diferencia entre DAO y DTO, manejo de errores es un tema aparte. Jeje!
      ¡Saludos!

    • @leonardopaez894
      @leonardopaez894 Před 7 dny

      @@unprogramadornace gracias; disculpa, soy nuevo en el canal; tienes algún video que trate sobre el tema?

    • @unprogramadornace
      @unprogramadornace  Před 7 dny +1

      @@leonardopaez894 Hola, por ahora no tengo videos sobre manejo de excepciones.
      ¡Saludos!

  • @RodrigoNavarro19
    @RodrigoNavarro19 Před 3 měsíci

    Excelente video para aclarar los conceptos, muchas gracias. Una sugerencia de videos podría ser socket o hashicorp vault, muchas gracias por todo

  • @bandicot635
    @bandicot635 Před 2 měsíci +1

    Muy buen video, me gustaría que crearas otro enseñando como controlar los errores y como mandar las respuestas de los errores al cliente.

    • @j0k3r-rgl
      @j0k3r-rgl Před 4 dny

      Te recomiendo buscar videos de handlers o interceptores creo que se llamaria. Lo que haces es crear una Exception personalizada y despues con una clase de tipo @RestControllerAdvice insertas los metodos de tipo @ExceptionHandlers. Lo que tenes que hacer es que la excepcion llegue al metodo del controller para que los handlers funcionen (no lo recuerdo bien si era asi). Pero busca videos sobre ExceptionHandlers, hay muchos y es re simple usarlos... Incluso podes crear Handlers para cuando no envian body, pathvariables y esas cosas, ademas de que podes usarlo con la dependencia de Validation y quedaria super tu API REST

  • @adrianosorio500
    @adrianosorio500 Před 3 měsíci

    Muy bien explicado, como dicen cortito y al pie. facil de entender con ejemplos sencillos para comprender esa duda que existe entre DTO vs DAO que a muchos nos costo y cuesta cuando estamos aprendiendo sobre patrones.

  • @emmanuelparra2991
    @emmanuelparra2991 Před 2 měsíci

    Excelente forma de explicar y abarcar un tema tan importante a la hora de desarrollar en Java, gracias a tan detalladas explicaciones es posible entender no solo este maravilloso lenguaje de programación sino tambien conceptos técnicos muy importantes del día a día.

  • @gueto123123
    @gueto123123 Před 2 měsíci

    Excelente profe, explica todo muy bien y entendible, estaba en 0´s

  • @TheSoporte
    @TheSoporte Před 2 měsíci

    Me gustó mucho el vídeo, además como explica mediante la gráfica. Yo si quisiera saber porque no se debe usar @Data en un Entity. Gracias y siga adelante con los vídeos.

  • @richardcarmonaestrada8962
    @richardcarmonaestrada8962 Před 3 měsíci

    Muchas veces empezamos a crear nuestros proyectos en base a algún tutorial sin saber que patrones estamos aplicando y peor del por qué se aplica un patrón, gracias a estos vídeos sabemos el motivo real de estos patrones, gracias por los videos

    • @unprogramadornace
      @unprogramadornace  Před 3 měsíci +1

      Hola, me alegra que después de ver el vídeo tengas un poco más claro algunos conceptos. Gracias por comentarlo.
      ¡Saludos!

  • @embusteroso
    @embusteroso Před 3 měsíci

    Gracias como siempre por el buen contenido! si puedes crear contenido de seguridad en spring boot con Keycloak seria lo maximo.

    • @unprogramadornace
      @unprogramadornace  Před 3 měsíci

      Hola, en el canal ya existe un video sobre Spring boot con Keycloak.
      Te comparto el enlace:
      czcams.com/video/zR3igUft1KA/video.html
      Te invito a suscribirte al canal y activar la campana de notificaciones para que estés enterado de los temas que trato aqui en El canal.
      ¡Saludos!

  • @isauracarrasco4752
    @isauracarrasco4752 Před 2 měsíci

    Mil gracias n_n

  • @JuanPablo-he4cx
    @JuanPablo-he4cx Před 2 měsíci

    Muchas gracias por la explicación excelente, como uno decide si usarlo de esta manera, o hacerlo con los repositorios y dejar que spring lo haga

  • @hansponte1951
    @hansponte1951 Před 2 měsíci

    Excelente video , existe la posibilidad de que realices un vídeo de manejo de excepciones y errores 🙏🙏

    • @unprogramadornace
      @unprogramadornace  Před 2 měsíci

      Gracias por comentar. Tendré en cuenta tu sugerencia.
      ¡Saludos!

  • @henryperez8849
    @henryperez8849 Před měsícem

    Muy buen curso 🎉 si es posible explicar porque no poner en las entitys el arroba data

  • @sebastianAbello-tx7ks
    @sebastianAbello-tx7ks Před 3 měsíci

    La verdad no soy mucho de comentar en videos, pero la verdad es que tu contenido es muy bueno, además tus explicaciones son geniales te felicito, podrías hacer una una serie de arquitecturas , se que toma tiempo pero podría ser interesante.

    • @unprogramadornace
      @unprogramadornace  Před 3 měsíci

      Muchas gracias por tu comentario; voy a tener en cuenta tu sugerencia.
      ¡Saludos!

  • @nelsonalvarez92
    @nelsonalvarez92 Před 2 měsíci

    Excelente tutorial, lo único que me hace ruido y me gustaría en lo posible ampliar este mini proyecto para: manejo de excepciones y trabajar la capa de negocio haciendo validaciones y demás. Siempre es bueno aprender y repasar estas cuestiones. de todos modos a no confundir, me encanto el tutorial todo muy claro

    • @unprogramadornace
      @unprogramadornace  Před 2 měsíci

      Hola, entiendo tu punto de vista, pero ya tengo otros videos tratando esos temas. Adicionalmente no puedo mezclar diferentes temas porque El objetivo es explicar cada cosa en especifico. Pronto vienen proyectos combinando todo.
      ¡Saludos!

  • @Dleonariza
    @Dleonariza Před 10 dny

    Tengo una inquietud, con el uso del DAO y el DTO puedo evitar la recursión Infinita en la serialización?. Al tener entindades con relaciones bidireccionales siempre me ocurre dicha recursión, me sería de gran ayuda tu respuesta, gracias.

  • @rickhunter8216
    @rickhunter8216 Před 3 měsíci

    BUEN VIDEO TIO NACE.

  • @ronaldgarciavazquez8232
    @ronaldgarciavazquez8232 Před 2 měsíci

    Podrías por favor implementar monolito modular para comprender como se comunican y estructura??

  • @jaencarmonaali3926
    @jaencarmonaali3926 Před 2 měsíci

    He aprendido mucho con tus videos, te agradezco mucho por el contenido que nos proporciones. Y me gustaría que más adelante pudieras enseñarnos Herencia con spring boot, Sobretodo porque tengo una duda: cómo hago para crear una Entidad Person, la cual va a tener atributos como nombre, mail, teléfono y Address (la cual es otra Entidad, donde se almacenarán los detalles de la dirección). No obstante, Person es la case padre de Owner y Customer, las cuales tienen esos atributos en común más otros que no, además de la particularidad de que un Owner sólo puede tener una Address pero Customer puede tener muchas Address

    • @unprogramadornace
      @unprogramadornace  Před 2 měsíci +1

      Hola, tendré en cuenta tu sugerencia.
      Pero para manejar herencia con JPA se tienen que tener algunas cosas en cuenta, claro que JPA nos ayuda a trabajar con eso, pero es complicado explicartelo en un comentario, mi consejo es que busques un poco de documentacion en google.
      Espero puedas resolverlo.
      ¡Saludos!

  • @ottonlucena1295
    @ottonlucena1295 Před měsícem

    Excelente video profe, que gran metodología de enseñanza y llegada a las personas. Espero siga así y pueda seguir creando este gran contenido.
    Está en plataformas como udemy o algo similar?

    • @unprogramadornace
      @unprogramadornace  Před měsícem

      Hola, por ahora no tengo cursos en Udemy.
      ¡Saludos!

    • @ottonlucena1295
      @ottonlucena1295 Před měsícem

      @@unprogramadornaceprofe de casualidad tendrá como desplegar el Back bien sea dockerizado o no?

  • @facundoaquino2897
    @facundoaquino2897 Před 20 dny

    puede ser que ahora se use mas el repository que lo implemente directamente el service y listo, no entiendo la diferencia entre ambos, muy buen video!

    • @unprogramadornace
      @unprogramadornace  Před 20 dny +1

      Hola, CUIDADO con esa percepcion, el repository podria facilmente reemplazar al DAO, pero el DTO es otra cosa completamente aparte. En algo en lo que concuerdo contigo es que obviamente el repository es mas usado y simplifica mucho todo, pero de Igual modo es bueno conocer estos conceptos para saber como funciona Spring por dentro.
      ¡Saludos!

  • @kronos5656
    @kronos5656 Před 3 měsíci

    Muchas gracias. Comence a verlo y estoy aprendiendo muchos conceptos que los tenia confusos. En el futuro podrías hacer alguna tutorial para generar reportes en pdf? gracias!

    • @unprogramadornace
      @unprogramadornace  Před 3 měsíci

      Hola, muchas gracias por tu comentario. Desde hace bastante tiempo existe en el canal un video sobre creación de reportes en PDF, te comparto el enlace:
      czcams.com/video/UExwNGhEcZc/video.html
      También te invito a suscribirte al canal y activar la campana de notificaciones para que estés enterado de todos los temas que voy tratando en el canal.
      ¡Saludos!

  • @alfonsotorres7425
    @alfonsotorres7425 Před 3 měsíci

    Muy buena explicación, solo una duda, retorno del la creacion usuario, para efectos d emostrar el ID, tendriaos que recuperarlo también u no un null, no?

    • @unprogramadornace
      @unprogramadornace  Před 3 měsíci

      Hola, la aplicacion puede mejorarse o funcionar como tu quieras. Este es solo un demo de ejemplo. Ese null podria quitarse o retornar directamente el ID del usuario creado.
      Saludos.

  • @TheSoporte
    @TheSoporte Před 2 měsíci

    Quisiera que crearas un video acerca de las Relaciones, por ejemplo OneToMany, ManyToOne, etc mediante un ejercicios. Ojalá lo tuvieras en cuenta. Gracias

    • @unprogramadornace
      @unprogramadornace  Před 2 měsíci +1

      Hola, si revisas los videos del canal de darás cuenta que ya tengo 2 videos hablando del tema, te los comparto:
      Relaciones con JPA: czcams.com/video/6RQTsx_6wXo/video.html
      Relaciones bidireccionales vs unidireccionales: czcams.com/video/NnNzisMeRWk/video.html
      Te invito a suscribirte al canal y activar la campana de notificaciones para que estes enterado de los temas que voy tratando en el canal.
      ¡Saludos!

    • @TheSoporte
      @TheSoporte Před 2 měsíci

      @@unprogramadornace Que pena Santi que no revisé los vídeos en el canal. Graciss

    • @unprogramadornace
      @unprogramadornace  Před 2 měsíci

      @@TheSoporte No hay lío. Saludos.

  • @LucianoMarcelo27011965
    @LucianoMarcelo27011965 Před 3 měsíci

    Una Consulta , tu explicaste el CRUD con Entity Manager , existe otra manera que la enseñan , usando CrudRepository , cual recomiendas ? . Muchas gracias

    • @unprogramadornace
      @unprogramadornace  Před 3 měsíci +1

      Hola, a mí me gusta usar más los repositorios. Sin embargo, tenía que explicar cómo funciona el DAO para aquellos que no lo tenían claro.
      Saludos.

  • @SheeM1700
    @SheeM1700 Před 2 měsíci

    creo que no se utiliza @Data en el entity para evitar problemas que interfieren en las relaciones y eso entraría a ser una mala practica? XD?

    • @unprogramadornace
      @unprogramadornace  Před 2 měsíci +1

      Hola, de hecho usas @Data para las relaciones no tiene nada de malo, no se recomienda utilizar por otros motivos relacionados con la carga perezosa de JPA, se viene un video hablando del tema.
      ¡Saludos!

  • @CarlaMenacho-tt1sm
    @CarlaMenacho-tt1sm Před 3 měsíci

    una pregunta, por que usas @Autowirred? no seria mejor utilizar directamente la anotacion en la clase el @RequieredArgsContructor? y definir el dao como un final cuando lo instaciamos?

    • @unprogramadornace
      @unprogramadornace  Před 3 měsíci

      Hola Carla, muchas gracias por tu pregunta. Te comento:
      Lo primero que debes tener claro es que en Spring (De forma nativa) existen 3 formas diferentes de inyectar dependencias:
      1) Por constructor
      2) Por metodo setter
      3) Usando @Autowired
      Esas son las 3 formas nativas de hacerlo.
      Cuando usas @RequiredArgsContructor (Anotacion propia de Lombok), lo que estas haciendo en una inyeccion por constructor, obviamente es automatizado por Lombok, pero es completamente valido.
      Conclusion:
      Cualquiera de las 3 formas de inyeccion son correctas, tambien puedes usar Lombok con esa anotacion. Puedes trabajar como mas te gusta.
      ¡Saludos!

    • @CarlaMenacho-tt1sm
      @CarlaMenacho-tt1sm Před 3 měsíci

      @@unprogramadornace gracias, si no es mucho pedir, sera que puedes hacer un video de las buenas practicas en el servicio repositorio o dao en el model, o un video de buenas practicas general usando spring boot. si es posible

    • @unprogramadornace
      @unprogramadornace  Před 3 měsíci

      Me lo apunto.
      ¡Saludos!

  • @Miranda-jq5wb
    @Miranda-jq5wb Před 12 dny

    Excelente, ¿recomiendas crear nuestro propio DAO siempre en nuestros proyectos o usar el repository de siempre?, ¿cuál es mejor práctica? 😅

    • @unprogramadornace
      @unprogramadornace  Před 8 dny

      La verdad me gusta más el repository. Ambas formas están bien, pero por simplicidad me gusta más el repository.
      ¡Saludos!

  • @arturoocode
    @arturoocode Před 29 dny

    Ahora mi duda es cuando usar DAO o Repository

    • @unprogramadornace
      @unprogramadornace  Před 29 dny +1

      Hola, todo depende de las necesidades del proyecto.
      ¡Saludos!

  • @roy_c
    @roy_c Před 2 měsíci

    Por que vs? Se usan para cosas distintas que no tienen nada que ver.

    • @unprogramadornace
      @unprogramadornace  Před 2 měsíci +1

      Hola, tienes toda la razón; se usan para cosas distintas. La justificación del VS es porque a mucha gente le dificulta diferenciar estos dos patrones; se confunden un poco. Por ese motivo puse ese nombre. Pero, tienes toda la razón: se usan para cosas diferentes.
      ¡Saludos!

  • @mikehurtado4772
    @mikehurtado4772 Před 2 měsíci

    No son incompatibles

  • @loremipsumdev
    @loremipsumdev Před měsícem

    Crea cursos en Udemy y te haces millonario 🤑🤑🤑🤑