Domina la creación de APIs REST con Spring Boot

แชร์
ฝัง
  • เผยแพร่เมื่อ 15 ก.ย. 2024

ความคิดเห็น • 250

  • @wellingtonreyes7243
    @wellingtonreyes7243 2 หลายเดือนก่อน +5

    Después de buscar entre un mar de videos, contenido y cosas sin sentidos, al fin encuentro algo que si se entiende y que me puede servir de impulso para mi futuro en Spring, muchas gracias profe, de verdad le agradezco, espero siga subiendo contenido!

    • @unprogramadornace
      @unprogramadornace  2 หลายเดือนก่อน

      Muchas gracias por tu comentario y por tomarte el tiempo de escribirlo.
      ¡Saludos!

  • @diegomejias.r
    @diegomejias.r หลายเดือนก่อน +1

    tengo aprox. 8 dias para aprender lo básico de springboot, incluido las APIs rest, este es mi primer video y puedo decir que entendí muchos conceptos que antes parecían complicados, muchas gracias

  • @leandrogutierrez773
    @leandrogutierrez773 ปีที่แล้ว +7

    Como pocos videos , muy bien explicado , podrías por favor ampliar lo de los query methods , gracias.

  • @Ana-sn5pb
    @Ana-sn5pb 7 หลายเดือนก่อน +2

    Me sumo a los comentrios. Me encanta como desglosa los conceptos complicados y los hace accesibles para todos los niveles. Además genera coriosidad por seguir aprendiendo. (mapStruct y métodos query )

    • @unprogramadornace
      @unprogramadornace  7 หลายเดือนก่อน +1

      Muchas gracias por comentar. Los mappers son un tema que trataré en un vídeo específico más adelante.
      ¡Saludos!

  • @yovanies2798
    @yovanies2798 7 หลายเดือนก่อน +3

    Un verdadero maestro, 1 de 1000 un verdadero y completo tutorial. aquí un seguidor. felicidades maestro.

    • @unprogramadornace
      @unprogramadornace  7 หลายเดือนก่อน +1

      Bienvenido a la comunidad.
      ¡Saludos Crack!

  • @develomentsystemnrg9902
    @develomentsystemnrg9902 7 หลายเดือนก่อน +1

    Nuevamente te felicito, quedan aun mas afianzados los conocimientos de Spring Boot. Un abrazo grande amigo

    • @unprogramadornace
      @unprogramadornace  7 หลายเดือนก่อน

      Muchas gracias por comentar. Saludos.

  • @ingosmalose
    @ingosmalose 2 หลายเดือนก่อน

    Excente tutorial. Dices que fue un poco largo pero completamente funcional, vale completamente la pena.

  • @rickhunter8216
    @rickhunter8216 ปีที่แล้ว +23

    TIO NACE, HAZ UN VIDEO FULL STACK CON UN API REST EN SPRING BOOT CON SPRING SECURITY, DTO's Y JWT, PERO USANDO REACT O ANGULAR EN EL FRONTEND

    • @SoyJavero
      @SoyJavero ปีที่แล้ว +12

      Si por favor en angular 😊

    • @jonnathangonzalez8639
      @jonnathangonzalez8639 10 หลายเดือนก่อน

      Yo tengo una duda, cuál es la diferencia de api rest y un CRUD ? O es lo mismo ? 🤔 Por qué se que creas eliminas etc pero no sé cuándo es api y cuando es CRUD por qué siempre veo todo completo

    • @Jean_F12
      @Jean_F12 10 หลายเดือนก่อน

      @@jonnathangonzalez8639 Bueno un crud en un conjunto basico de operaciones que vendrían a ser Crear,Leer,Actualizar y Borrar, mientras la api rest es un estilo de arquitectura para diseñar servicios web y por la cual la apirest implementa las operaciones crud

    • @francotoledo3111
      @francotoledo3111 9 หลายเดือนก่อน

      @@jonnathangonzalez8639 api rest es un crud sin front, el crud es un api rest con un front donde ves todo lindo y simple, en un api rest haces un crud pero mediante rutas url

    • @diegogigena6350
      @diegogigena6350 9 หลายเดือนก่อน

      ​@@jonnathangonzalez8639la diferencia entre otro, es que en las API vos devolves Json, y podés hacerlo a diferneias clientes

  • @Jean_F12
    @Jean_F12 11 หลายเดือนก่อน +1

    Uyyy Bro en serio muy buen video, buena explicación bien detallada eres una maquina
    Saludos desde Perú

    • @unprogramadornace
      @unprogramadornace  11 หลายเดือนก่อน

      Hola, me alegro que te haya gustado el vídeo, gracias por tomarte el tiempo de comentar.
      ¡Saludos Crack!

  • @urtaav639
    @urtaav639 8 หลายเดือนก่อน +1

    un vido explicando más a detalle el uso de queryes ya que los ejemplos son los convencionales el tipico crud con jpa o crud repository, pero para hacer consultas más avanzadas

  • @johnherrera5913
    @johnherrera5913 10 หลายเดือนก่อน +1

    Master!!!
    Pocas personas hacen esto !
    Realmente muy bueno, te felicito…
    estás son las cosas que se agradecen,
    saludos desde Bogota.

    • @unprogramadornace
      @unprogramadornace  10 หลายเดือนก่อน

      Gracias por comentar.
      ¡Saludos!

  • @ronaldgarciavazquez8232
    @ronaldgarciavazquez8232 ปีที่แล้ว +3

    Mis mejores deseos, tu canal el de los más valorados para mi persona ya que sueles crear excelente contenido, personalmente mejor que cursos de pago de udemy.

    • @unprogramadornace
      @unprogramadornace  ปีที่แล้ว

      Muchas gracias por el apoyo y por tu comentario.
      ¡Saludos!

  • @sinlimites608
    @sinlimites608 หลายเดือนก่อน

    Waooo.. excelente amigo y un millon de gracias por ayudarme a comprender de un modo sencillo este tema.

    • @sinlimites608
      @sinlimites608 หลายเดือนก่อน

      te hago una consulta: veo que se usan en algunos proyectos otras dependencias, es decir, al crear el proyecto en Sprint. Sera que depende el tipo de Api? cuando puedas agradeceria tu comentario. Mil gracias.

  • @luiszapata563
    @luiszapata563 4 หลายเดือนก่อน

    Excelente, muy bien explicado. Eres un gran maestro y explicas con mucha humildad. Esto lo que necesitaba para aprender de api rest, como hacer los crud y la importancia del DTO.

    • @unprogramadornace
      @unprogramadornace  4 หลายเดือนก่อน

      Muchas gracias por comentar. Me alegra que mi contenido sea de utilidad para ti.
      ¡Saludos!

  • @FernandoFernandez-go1uf
    @FernandoFernandez-go1uf หลายเดือนก่อน

    muy buen video, bien esplicado, muchas gracias, si pudiera tener el proyecto mucho mejor

  • @danielaescobar497
    @danielaescobar497 5 หลายเดือนก่อน +1

    gracias por el tutorial profe!!

  • @devripxy
    @devripxy ปีที่แล้ว +1

    Gracias por el aporte a la comunidad, muchas gracias.

  • @alpaquitay8974
    @alpaquitay8974 4 หลายเดือนก่อน

    seria interesante un video tuyo sobre programacion funcional, te haces entender muy bien...

  • @alejandrocastano5763
    @alejandrocastano5763 3 หลายเดือนก่อน

    tenia que ser paisa, muy buen tutorial felicidades profesor

  • @michaelpadilla1769
    @michaelpadilla1769 3 หลายเดือนก่อน

    Excelente video! Seria un gran aporte un tutorial de manejar excepciones con spring boot para apis rest

  • @jesuspabloavioli4372
    @jesuspabloavioli4372 11 หลายเดือนก่อน +1

    Excelente contenido, tienes pensado hacer un video sobre el manejo de errores con RestControllerAdvice y Handler? Estaría genial, gracias por compartir tus conocimientos ✌️

    • @unprogramadornace
      @unprogramadornace  11 หลายเดือนก่อน +1

      Hola muchas gracias comentar, tendré en cuenta tu sugerencia.
      ¡Saludos!

  • @amoMiFlia
    @amoMiFlia ปีที่แล้ว

    Gracias por enseñar, me estaban matando las relaciones y mas claro no me pudiste dejar,,,,,

  • @abelsamanez8685
    @abelsamanez8685 11 หลายเดือนก่อน

    Excelente muchas gracias por compartir tus conocimientos me has ayudado mucho aprendí bastante más que la universidad 🙂

    • @unprogramadornace
      @unprogramadornace  11 หลายเดือนก่อน

      Muchas gracias por tu comentario.
      ¡Saludos!

  • @oecarrillo
    @oecarrillo 4 หลายเดือนก่อน

    Gracias por compartir tu conocimiento, Bendiciones

  • @bryanpoolarredondoovalle9682
    @bryanpoolarredondoovalle9682 6 หลายเดือนก่อน

    Exelente,muchas gracias por los videos son de gran importancia para mi aprendizaje

    • @unprogramadornace
      @unprogramadornace  6 หลายเดือนก่อน

      Me agrada que te haya gustado mi vídeo.
      ¡Saludos!

  • @thiagolopez4999
    @thiagolopez4999 11 หลายเดือนก่อน

    Excelente! Para los que usan Postgres, hay que actualizar la secuencia en la BD.

  • @brauliomariano
    @brauliomariano 10 หลายเดือนก่อน

    Magnífico!!! muchas gracias por compartir el conocimiento. Saludos.

  • @carlosrodriguez-kz8rm
    @carlosrodriguez-kz8rm ปีที่แล้ว +1

    Muchas gracias por el gran aporte me sirve mucho para practicar, y tomar algunas cosas que me parecen mas practicas de la forma que tu lo haces, me voy construyendo como backend con aportes de muchos y claro algo mío, me considero no junior sino baby ja ja ja ja ja ja ja

    • @unprogramadornace
      @unprogramadornace  ปีที่แล้ว +1

      Hola, muchas gracias por tu comentario. Todos iniciamos así, no te preocupes. Solo sigue adelante y no te frustres si se te hace complicado algún tema, tu solo sigue.
      Un programador nace programando.
      ¡Saludos!

    • @brandonrodriguez935
      @brandonrodriguez935 ปีที่แล้ว +1

      Bro, estoy de acuerdo contigo. ¿Qué canal recomiendas que haga excelente contenido en español? Aparte de este, claro está.

    • @carlosrodriguez-kz8rm
      @carlosrodriguez-kz8rm ปีที่แล้ว +1

      @@brandonrodriguez935 este canal claro, TodoCode, Sacavix Tech, Lucas Moy y una colección enorme de programadores de la India!!!😂😂😂

  • @sebastianignaciosantillan2454
    @sebastianignaciosantillan2454 ปีที่แล้ว

    Gracias Bro por el aporte. Ahora desayuno y me siento a ver el video

  • @Shinigami4rt
    @Shinigami4rt 10 หลายเดือนก่อน

    wao por fin entendi bien esta merga, las api que eh aprendido en curso de pago ni buenas practicas tenian, buen re cool video

    • @unprogramadornace
      @unprogramadornace  10 หลายเดือนก่อน

      Felicitaciones, por fin entendiste.
      Gracias por comentar.
      ¡Saludos!

  • @JonatanTajadaRico-t2g
    @JonatanTajadaRico-t2g หลายเดือนก่อน

    Hola, muchas gracias por el trabajo que haces, por cierto, muy bien hecho. Me gustaria, por mi parte, que fueras mas despacio. Para mi explicas muy rapido, podrias ir mas lento, simplemente una opinion, constructiva. Aun asi, mil gracias, un saludo desde España :)

    • @unprogramadornace
      @unprogramadornace  หลายเดือนก่อน +1

      Hola, gracias por comentar. Tomaré en cuenta tu sugerencia.
      ¡Saludos!

  • @ubaldosanjuansanjuan5579
    @ubaldosanjuansanjuan5579 11 หลายเดือนก่อน

    Muchísimas, muchísimas gracias en verdad por este video Tutorial, este ha sido mi primer API que he hecho en toda mi vida, y le doy las gracias por guiarme en este camino. Espero que pueda también crear un video sobre cómo consumir esta API en un frontEnd(Android o Web). Saludos y bendiciones :D

    • @unprogramadornace
      @unprogramadornace  11 หลายเดือนก่อน

      Hola, felicidades por lograr crear tu primer API, sigue adelante. Voy a tener en cuenta tu sugerencia.
      ¡Saludos!

  • @dannyprats824
    @dannyprats824 5 หลายเดือนก่อน

    Tremendo!! ..se nota que sabe lo que hace. Podría por favor subir a github el proyecto?

  • @darx9050
    @darx9050 ปีที่แล้ว

    WOWWWW El mejor video sobre Spring Boot en todo youtube, muchas gracias, en caso de tener cursos en Udemy nos avisa ojala haga tambien de microservicios Muchas gracias por compartir su conocimiento 🙏☺

    • @unprogramadornace
      @unprogramadornace  ปีที่แล้ว +1

      Muchas gracias por tu comentario. Por ahora no tengo contenido en Udemy pero gracias por tu apoyo.
      ¡Saludos!

    • @darx9050
      @darx9050 ปีที่แล้ว

      @@unprogramadornace Mientras siga habiendo contenido aunque sea aqui por youtube le seguiremos apoyando saludos.

  • @israelsalinas2211
    @israelsalinas2211 11 หลายเดือนก่อน

    Excelente video, muchas gracias por compartir su conocimiento.

  • @HackZ2266
    @HackZ2266 6 หลายเดือนก่อน

    Muy buena explicación Bro, se entendio muy bien....

  • @fredericotorres2952
    @fredericotorres2952 ปีที่แล้ว

    Gracias por el tiempo, trabajo y esfuerzo realizado.

  • @kevindmm9666
    @kevindmm9666 8 หลายเดือนก่อน

    Muchas gracias por el video, es perfecto, espero y continúes con algún video para mejorar la parte del Testeo con Junit y mockito siempre y cuando puedas, muchas gracias y un cordial saludo.

  • @johnnattanrincon9608
    @johnnattanrincon9608 8 หลายเดือนก่อน

    Me encantan tus videos profe de lo mejor!!

  • @hadaangel793
    @hadaangel793 6 หลายเดือนก่อน

    Dios lo bendiga y le multiplique! 😅👍🏻

    • @unprogramadornace
      @unprogramadornace  6 หลายเดือนก่อน

      Muchas gracias por tu comentario.
      Bendiciones para ti también.
      ¡Saludos!

  • @AlexSearchYT
    @AlexSearchYT 3 หลายเดือนก่อน

    Excelente explicación!

  • @donas19
    @donas19 3 หลายเดือนก่อน

    Excelente video muy bien explicado.

  • @jessecg5508
    @jessecg5508 ปีที่แล้ว +1

    gracias por otro video sensacional, escuche de una tecnologia llamada swagger podrias hacer un video enseñando como implementar con este mismo proyecto :3

    • @unprogramadornace
      @unprogramadornace  ปีที่แล้ว +1

      Vale, tendré en cuenta tu sugerencia.
      ¡Saludos!

  • @LuisFernandoHurtadoRosales
    @LuisFernandoHurtadoRosales ปีที่แล้ว

    Muchas gracias por compartir tu conocimiento y sobre todo porque además de completo y actualizado, está muy bien explicado. De igual forma, la forma en la que explicas paso a paso es de lo mejor que he visto en youtube, porque llevas lo complejo a lo sencillo y eso no lo hace cualquiera. Muchas felicitaciones por esta labor que simplemente te engrandece. Nunca dejes esta obra que ayuda a tantas personas, para en un futuro mejorar su calidad de vida. Un abrazo. Muchas bendiciones.

    • @unprogramadornace
      @unprogramadornace  ปีที่แล้ว +1

      Muchas gracias por tu comentario. Me alegra mucho que mis videos sean de ayuda para todos ustedes.
      ¡Saludos!

  • @agustinibarrola8931
    @agustinibarrola8931 ปีที่แล้ว

    me hiciste facil lo que era dificil nuevo sub ojala sigas subiendo mucho mas contenido de spring de lo mejor en español

  • @jeassonsuarez9964
    @jeassonsuarez9964 7 หลายเดือนก่อน

    Hola, viendo este video me he fijado en algunas cosas y me surgieron las siguientes dudas, seria bueno que por favor me contestaras por puro aprendizaje, ya que no se cuando usar una u otra cosa:
    1- Por que se utiliza CrudRepository en vez de JPARepository?
    2- Por que utilizar el patrón DAO y no un DTO al momento de realizar la persistencia de la data?
    Muchas gracias, excelente contenido!

    • @unprogramadornace
      @unprogramadornace  7 หลายเดือนก่อน

      Hola, muchas gracias por tu comentario. Tus preguntas son bastante habituales al empezar a trabajar con Spring, así que intentaré explicar de la manera más clara posible, aunque el segundo punto amerita un tutorial completo.
      Respuestas:
      1) JPA dispone de distintos repositorios, entre ellos se encuentran CrudRepository, JpaRepository y PagingAndSortingRepository, entre muchos otros. Puedes elegir el que prefieras, pero la elección dependerá de las necesidades de tu proyecto, ya que cada repositorio ofrece características propias. En este caso, utilizamos CrudRepository porque solo necesitamos las operaciones básicas de un CRUD.
      2) Los DTO (Data Transfer Object) son objetos que se utilizan para transferir y propagar datos dentro de nuestra aplicación, mientras que los DAO (Data Access Object) se emplean exclusivamente para el acceso a datos. En conclusión, utiliza DTO cuando necesites recibir, devolver y propagar datos en tu aplicación, y DAO cuando estés realizando operaciones con la base de datos. Es una mala práctica interactuar con bases de datos utilizando DTO, así como también lo es devolver datos directamente al cliente usando DAO.
      Espero que estas aclaraciones te hayan sido de ayuda.
      ¡Saludos!

  • @Nacho-jf3dj
    @Nacho-jf3dj 8 หลายเดือนก่อน

    Excelente video, me ayudó a entender muchas cosas

  • @gonzaloturconi4657
    @gonzaloturconi4657 7 หลายเดือนก่อน

    Excelente video, te felicito!! Gracias por compartir tus conocimientos!! Me queda la duda de cómo manejar las validaciones de los inputs, por ejemplo sanitizar la entrada en caso de que traiga información adicional, validar que los tipos sean correctos, etc. Ojalá más adelante puedas hacer un video sobre eso 😇

    • @unprogramadornace
      @unprogramadornace  7 หลายเดือนก่อน +1

      Hola, ya tengo un vídeo en el canal en dónde enseño a validar la información, te comparto el enlace:
      th-cam.com/video/a3l1zmcNwjQ/w-d-xo.htmlsi=yOPgFbRtSW5SYZJe
      Te invito a darte un paseo por los vídeos del canal, sé que encontrarás información interesante.
      Espero que te sirva.
      ¡Saludos!

    • @gonzaloturconi4657
      @gonzaloturconi4657 7 หลายเดือนก่อน

      @@unprogramadornace Muchas gracias, me lo apunto!!!

  • @ernestofavio6735
    @ernestofavio6735 8 หลายเดือนก่อน

    Muchas gracias, he aprendido mucho.

  • @amoMiFlia
    @amoMiFlia 9 หลายเดือนก่อน +1

    como siempre da gusto ver tus videos,,,, pero me confunde un poco el uso de DAO Y DTO, podrias ayudarme con eso

    • @unprogramadornace
      @unprogramadornace  9 หลายเดือนก่อน +3

      Hola, gracias por comentar. Te explico brevemente: DAO y DTO son 2 patrones de arquitectura que cumplen funciones diferentes. DAO (Data access Object) son objetos que se usan para interactuar con la base de datos, punto. DTO (Data transfer Object) se usa para transferir o compartir atributos entre objetos.
      Básicamente es eso.
      ¡Saludos!

  • @emerson.dvlmt.g
    @emerson.dvlmt.g ปีที่แล้ว

    De lo mejor en contenido, muy agradecido

  • @dev-ingen
    @dev-ingen ปีที่แล้ว

    Genial, estaria bueno un video testeando api rest, un abrazo y buen video

  • @Amauta20
    @Amauta20 9 วันที่ผ่านมา

    Excelente aporte, por favor puedes compartir los archivos de trabajo

    • @Amauta20
      @Amauta20 7 วันที่ผ่านมา

      Ojala puedas subir al Git los archivos de trabajo

  • @JuanRomero-ii6jb
    @JuanRomero-ii6jb 2 หลายเดือนก่อน

    Hola Santi, primero quiero felicitarte porque se entiende todo a la perfección igual que tus otros videos.
    Quería consultarte por las clases implement tanto de DAO como las de servicio. En ningún momento se utilizan, si se utilizan las interfaces.
    Probé cambiando las clases por las interfaces donde estaban siendo utilizadas y sigue funcionando a la perfección.
    Mi pregunta es, puede haber algún inconveniente con esto o es lo mismo?
    Saludos.

    • @unprogramadornace
      @unprogramadornace  2 หลายเดือนก่อน +1

      Hola, el principio de inyeccion de dependencias nos dice que debemos inyectar los componentes mas genericos y spring boot buscará la implementacion por ti, es por eso que inyectamos las interfaces.
      ¡Saludos!

    • @JuanRomero-ii6jb
      @JuanRomero-ii6jb หลายเดือนก่อน

      Perfecto, voy a investigar sobre el tema entonces. Una última pregunta, que patrón de diseño sería este? Porque se usa DAO pero también se usa repository.

    • @unprogramadornace
      @unprogramadornace  หลายเดือนก่อน +1

      Hola, repository no es un patron de diseño como tal, simplemente es un objeto que por debajo usa el patron DAO. En este video explico a detalle como funciona el patron DAO y su relacion con DTO.
      th-cam.com/video/XgUEjrTX9Bs/w-d-xo.htmlsi=AetgL0-UHRreQWKG
      ¡Saludos!

  • @Unknown-so7qv
    @Unknown-so7qv ปีที่แล้ว

    Genial el video, espero te animes a hacer uno sobre los Query methods

  • @biancahoffmann2489
    @biancahoffmann2489 7 หลายเดือนก่อน

    tendrás algún video con arquitectura limpia? me gusta mucho tu forma de explicar, lo entiendo mejor jejeje 😁😁

    • @unprogramadornace
      @unprogramadornace  7 หลายเดือนก่อน +1

      Hola, por ahora la mayoría de videos trabajan con arquitectura en capas, por ahora no tengo videos sobre arquitectura limpia pero no descarto la posibilidad de hacerlo.
      ¡Saludos!

    • @biancahoffmann2489
      @biancahoffmann2489 7 หลายเดือนก่อน

      @@unprogramadornace estaría genial, gracias 😃

  • @arletteportus
    @arletteportus ปีที่แล้ว

    Excelente, muchas gracias!

  • @eliodoromancera2093
    @eliodoromancera2093 5 หลายเดือนก่อน

    Yo hice un CRUD algo similar, pero en ves de crear las bases de datos desde el codigo lo hice en el workbench

  • @gabrielvalera8833
    @gabrielvalera8833 3 หลายเดือนก่อน

    excelente video

  • @moisescornejo1486
    @moisescornejo1486 8 หลายเดือนก่อน

    Excelente canal muy completa la información... podrias hacer alguno con el patron de diseño mvc? Quizas parecido a este? Para saber bien las diferencias entre mvc y dao

    • @unprogramadornace
      @unprogramadornace  8 หลายเดือนก่อน

      Hola, tendré en cuenta tu sugerencia. Te aclaro algo, MVC es un patrón de arquitectura y DAO es un patrón de diseño. Son dos cosas completamente diferentes, más bien la comparación correcta sería: MVC vs Rest.
      ¡Saludos!

  • @DnlMrtz
    @DnlMrtz 2 หลายเดือนก่อน

    Gracias por todo hermano, me ha servido mucho... Tengo una duda. Cuando realizas la inyeccion de la dependencia en el MakerServiceImpl, ¿Por se inyecta la interfaz IMakerDao y no la implementacion (MakerDAOImp)? ¿Cual es la diferencia entre inyectar una u otra? De antemano gracias hermano.

    • @unprogramadornace
      @unprogramadornace  2 หลายเดือนก่อน +1

      Hola, es un primcipio de inyeccion de dependencias, siempre debes inyectar la interface y spring se encargará de buscar la implementacion por ti.
      ¡Saludos!

  • @edurcdev
    @edurcdev ปีที่แล้ว +1

    Genial la clase, por cierto que tema o estilos usas en tu interfaz del IntelliJ Dea para que sea vea con esos iconos y fondos azul?? gracias!!

    • @unprogramadornace
      @unprogramadornace  ปีที่แล้ว +1

      El tema de llama Gradianto y los iconos Atom icons.
      ¡Saludos!

  • @KlanBr1
    @KlanBr1 ปีที่แล้ว

    Muy buen video me encanta xq es un tutorial donde dejas claro las buenas practicas, solo 3cositas:
    1. la estructura de carpetas que seguis con el persistence del patron DAO si pudieras indagar mas por que lo usaste, o si con lo que hace JPA por detras ya estaria aplicando DAO?
    2. El ResponseEntitity con comodin es mejor usarlo o especificar? que es lo que se usa?
    3.Y por ultimo el query que me crea JPA por defecto no me funciono, será que habria que extender de JPARepository y no de CRUDRepository?
    Y gracias por tan buenos videos, con esta calidad vas a llegar lejos, ya que en el mundo hispano no hay tan buenos tutoriales como los tuyos

    • @unprogramadornace
      @unprogramadornace  ปีที่แล้ว

      Hola, con respecto a tu comentario te comento lo siguiente:
      1) La estructura de carpetas no tiene nada que ven con JPA, simplemente uno de los principios de arquitectura de software es el desacoplamiento. En la estructura que usamos dejamos bien separadas las capa servicio, persistencia, controladores, etc. Es un tema muy amplio y daría para un curso completo.
      2) Puedes usar el ResponseEntity con comodín o especificar el tipo de dato, cualquiera de las 2 está bien, sin embargo es un poco más recomendable dejar que sea Spring Boot el que gestione la respuesta para poder serializarla con el Jackson ya que en ocasiones tenemos tipos de datos distintos.
      3) JpaRepository extiende de CrudRepository, los repositorios de JPA nos sirven para lo mismo con algunas funcionalidades muy específicas, en nuestro caso es indiferente usar uno u otro. En el vídeo no testeamos ese query method, en un próximo video podría ahondar un poco más sobre ese tema.
      ¡Saludos!

    • @Ana-sn5pb
      @Ana-sn5pb 11 หลายเดือนก่อน

      Cuándo usar DAO Y Cuándo usar DTO 🐣

    • @unprogramadornace
      @unprogramadornace  11 หลายเดือนก่อน

      @@Ana-sn5pb Hola, ambos son patrones diferentes, DAO (Data Acceso object) se usa para interactuar con bases de datos y DTO (Data Transfer Object) se usa cuando quieres mapear información de algún objeto. Por ejemplo mapear campos de un objeto DTO a un objeto entity para insertarlo en una BD.
      ¡Saludos!

  • @jesusbautista9258
    @jesusbautista9258 21 วันที่ผ่านมา

    Muchas gracias por el video. Me surgió una duda, por qué se utiliza DAO y Repository al mismo tiempo? No es redundante crear un DAO sobre un Repository?

    • @unprogramadornace
      @unprogramadornace  21 วันที่ผ่านมา +1

      Hola, no necesariamente es redundante aunque puede parecer que sí, lo que hice fue agregarle una capa más de abstracción para desacoplar aún más la funcionalidad de conexión a base de datos, a veces es útil, otras veces no, pero todo depende de la funcionalidad que se quiera dar.
      ¡Saludos!

  • @cubatv2023
    @cubatv2023 ปีที่แล้ว

    Excelente explicacion, muy buenas practicas. De lo mejor que he visto en español !!!! Me gustaria saber si es posible en spring implementar middlewares para validar los parametros de las rutas. Saludos

    • @unprogramadornace
      @unprogramadornace  ปีที่แล้ว

      Hola, usualmente los parametros de validan con una librerìa llamada VALIDATION, puedes agregar dicha libreria desde el Spring Initializr. Pero si quieres tener un codigo que se ejecute antes de llegar al controller podrias implementar un INTERCEPTOR http. Lo interceptores se ejecutan antes del controller y allì puedes ejecutar lo que quieras.
      Saludos.

    • @cubatv2023
      @cubatv2023 ปีที่แล้ว

      @@unprogramadornace gracias por el aporte. Me gustaria ver un video de API REST con todo lo que utilizas en el video y ademas incorporarle INTERCEPTOR , WEBSOCKETS y manejar imagenes desde el backend. Sin duda seria el tutorial mas completo y mejor de youtube. Bendiciones!! Gracias por todo!!!

  • @stevenrodriguezbotero7654
    @stevenrodriguezbotero7654 ปีที่แล้ว

    Excelente video, te pregunto, tienes pensado hacer video sobre la creación de Microservicios con Spring Boot?

    • @unprogramadornace
      @unprogramadornace  ปีที่แล้ว +1

      Hola, la respuesta es sí.
      Un vídeo sobre microservicios está dentro de los planes.
      ¡Saludos!

  • @renkobatista5497
    @renkobatista5497 4 หลายเดือนก่อน

    el video esta bueno, bien explicado en detalle salvo algunos detallitos como "stream", pero no pasa nada, lo que si es de recapitular es la cantidad de publicidad que tiene el video, realmente es muy molesto, osea corta la onda de aprender, pues cada tanto sale publicidad...solo eso, poner pero no tanta publi

    • @unprogramadornace
      @unprogramadornace  4 หลายเดือนก่อน

      Hola, muchas gracias por comentar. Streams es un tema que daria para un video completo y es complicado explicarlo sin algunos conceptos previos.
      Frente a la publicidad te aclaro que yo no controlo eso, lo hace directamente TH-cam. Obviamente habilitamos los anuncios para ganar al menos un poco por los videos, pero los anuncios los pone directamente TH-cam y no los TH-camrs.
      ¡Saludos Crack!

    • @renkobatista5497
      @renkobatista5497 4 หลายเดือนก่อน

      @@unprogramadornace ah bueno, crei que se podia controlar un poco en volumen sobre los anuncios.Por otro lado estaria bueno un video usando quarkus que nadie lo hace o mas bien pocos con algun proyecto no tan grande pero algo asi como un sistema de ventas u otro ecommerce,entonces harias la diferencia con otros canales por muy encima

  • @jeysonjosevelasquezvasquez3808
    @jeysonjosevelasquezvasquez3808 10 หลายเดือนก่อน

    Solo una observación compañero, me corriges si estoy mal; pero me parece que en el min 59:55 cuando creas el update Maker, estas actualizando la entidad Maker y no el makerDTO.

    • @unprogramadornace
      @unprogramadornace  10 หลายเดือนก่อน

      Hola, en efecto tu afirmación es incorrecta. Pero no te preocupes, te digo el por qué.
      El Maker es un Entity, todas las operaciones que se hagan contra la base de datos deben hacerse con objetos ENTITY.
      MakerDTO es una clase que implementa el patrón DTO (Data transfer Object), y estos objetos se usan solamente para transferencia de datos o campos.
      Es un error grande hacer operaciones contra la base de datos con objetos DTO y es por eso que en el segundo 59:55 enviamos el update a la base de datos con el Maker.
      ¡Saludos!

  • @jorgetapia4633
    @jorgetapia4633 7 หลายเดือนก่อน

    Hola, una pregunta, ¿Hay alguna documentación para poder visualizar de forma más gráfica los usages que tiene cada clase / interfaz java / package ?
    Espero se entienda la pregunta, buen video por cierto 👍👍

    • @unprogramadornace
      @unprogramadornace  7 หลายเดือนก่อน

      Hola, creo que entiendo tu pregunta. Pienso que lo mas cercano a eso seria el javadoc. Practicamente vamos documentando el codigo a medido que lo vamos escribiendo. Te doy un ejemplo de como se hace:
      /**
      * Calcula la suma de dos enteros.
      *
      * @param a El primer entero a sumar.
      * @param b El segundo entero a sumar.
      * @return La suma de 'a' y 'b'.
      */
      public int sumar(int a, int b) {
      return a + b;
      }
      Saludos.

  • @juanpabloleal3013
    @juanpabloleal3013 5 หลายเดือนก่อน

    hola gracias por el video, tengo una duda debo descargar el SQL? por que vi que mostrate
    saludos.

    • @unprogramadornace
      @unprogramadornace  5 หลายเดือนก่อน +1

      Hola, claro que sí. Doy por sentado que ya tienes el SQL y el workbech instalado.
      ¡Saludos!

  • @byandrev
    @byandrev ปีที่แล้ว

    Geniooooo 💯

  • @AngelMendoza-zr8cc
    @AngelMendoza-zr8cc 8 วันที่ผ่านมา

    Otra duda, la anotacion @Build en las entidades es lo que te permite el método builder() cuando haces una save de las entidades?

    • @unprogramadornace
      @unprogramadornace  8 วันที่ผ่านมา

      Hola, la anotación @Builder te permite usar el método builder para construir los objetos.
      ¡Saludos!

  • @luisargandona8761
    @luisargandona8761 4 หลายเดือนก่อน

    Buenas profesor, no entiendo el error null cuando lanzas el findbyId, ya que List tiene valores en el 48:30. Sin embargo le pones un JsonIgnore y sí que te muestra los productos, cuando sólo debería obtener el id y nombre del maker al decirle que ignore la lista de productos.

    • @unprogramadornace
      @unprogramadornace  4 หลายเดือนก่อน

      Hola, tu pregunta es bastante interesante. Para que entiendas el concepto debes tener en cuenta el fetch que estamos usando. En el vídeo usamos LAZY, eso quiere decir "carga perezosa", eso lo que hace es que solo se hará la consulta a base de datos cuando se llame al método Get correspondiente del atributo en cuestión. Es por eso que nos devuelve un null, porque no estamos llamando explícitamente al método Get, entonces para evitar ese null le decimos al serializador de Spring que ignore ese campo.
      ¡Saludos!

    • @luisargandona8761
      @luisargandona8761 4 หลายเดือนก่อน

      @@unprogramadornace Eso es correcto y lo comprendo, pero una vez pones el JsonIgnore, no ignora el campo y SÍ se obtiene el resultado de Lista de Productos, aunque le pones JsonIgnore. Evitas el error de null, pero luego te ofrece el dato. La pregunta concreta es, por qué el endpoint devuelve los datos del maker y el productList, cuando a productList le has puesto un ignore para que no te lo muestre

    • @unprogramadornace
      @unprogramadornace  4 หลายเดือนก่อน +1

      Hola, le puse @JsonIgnore al entity para que no intente seriazarlo en una primera instancia, despues llamamos al metodo get product list en la clase MakerController en la linea 32. Alli se hace una consulta explicita al metodo get del listado y por eso el me retorna la respuesta.
      ¡Saludos!

  • @hcoronado
    @hcoronado 4 หลายเดือนก่อน

    Excelente aporte mi estimado. Tengo una duda, sería conveniente utilizar dos DTO por cada entity?, osea una para las respuestas y otra solo para las solicitudes. Generalmente (en mi caso) uso dos para no exponer datos sensibles, por ejm. una clase User que tenga como atributo password, lo estaría utilizando solo en mi DTO de solicitud necesario para crear un usuario, mas no en la respuesta que sería lo que llevo al frontend... mi duda era esa. Se agradece.

    • @unprogramadornace
      @unprogramadornace  4 หลายเดือนก่อน +1

      Hola, puedes usar cuantos DTO quieras, el patron nos dice que los datos de los DTO se pueden mapear de diferentes fuentes, sin embargo debes analizar muy bien cada caso para no afectar la escalabilidad del proyecto.
      ¡Saludos!

    • @hcoronado
      @hcoronado 3 หลายเดือนก่อน

      Gracias por tu respuesta. Tengo otra duda 🙂 si quiero usar un método para actualizar un maker: public Maker update(Long id, Maker maker) tendríamos que agregarlo e implementarlo en el DAOImpl para luego jalarlo en el Service?, pero si antes de actualizarlo quiero validar que exista ese maker, con un if, ¿dónde debería hacerse esa lógica? Pienso que en el DAOImpl porque en el service veo que solo jalamos los metodos del DAO y en mi makerService dicho metodo update quedaría: makerDAO.update(id, maker)?. Espero se me pueda entender. Gracias de antemano.

  • @josuealejandromedinaguerre7010
    @josuealejandromedinaguerre7010 ปีที่แล้ว

    Genial

  • @ingosmalose
    @ingosmalose 2 หลายเดือนก่อน

    existe alguna diferencia en el tiempo de respuesta usando la notacion query o el metodo del CRUD?

    • @unprogramadornace
      @unprogramadornace  2 หลายเดือนก่อน

      Hola, no afecta el rendimiento hacerlo de una forma u otra.
      ¡Saludos!

  • @AngelMendoza-zr8cc
    @AngelMendoza-zr8cc 8 วันที่ผ่านมา

    Una duda en 1:13:41 aprox, en el método findAll de Product controller, cuando construyes el objeto de respuesta que es una lista , le haces un stream, luego un map y dentro del map una funcion lambda donde cada product lo conviertes a un ProductDTO le seteas el maker con product.getMaker(), aqui no se estaría violando el principio de no enviar en la respuesta entidades de negocio, y deberia ser un makerDTO, es decir se tendría que hacer una nueva conversión del maker a un makerDTO?

    • @unprogramadornace
      @unprogramadornace  8 วันที่ผ่านมา

      Hola, tienes toda la razón. Es un pequeño detalle que pasé por alto. Es genial tu apreciación.
      ¡Saludos!

  • @MrDev1024
    @MrDev1024 9 หลายเดือนก่อน

    Tengo una consulta cuando hablas de la carga perezosa dices que a veces es necesario traernos esos datos en este caso los productos pero en otras ocasiones no, pero al momento de hacer llamar al endpoint para listar todos los fabricantes se listan todos con sus respectivos productos. Hay una manera de solo listar los fabricantes sin tener que llamar a los productos?. Excelente vídeo!

    • @unprogramadornace
      @unprogramadornace  9 หลายเดือนก่อน

      Claro que sí, puedes utilizar la anotación @JsonIgnore en el atributo que quieras excluir de la respuesta, de igual modo eso se maneja también con los famosos mappers en dónde tú decides que es lo que quieres devolver como respuesta.
      ¡Saludos!

    • @ivanruiz4984
      @ivanruiz4984 9 หลายเดือนก่อน

      @@unprogramadornace Buenas, buen curso!! mi pregunta es relacionada con esta. Comentabas que con @JsonIgnore se omite lo que se muestra en el json, pero sim embargo en postman vemos que se muestra la lista de productos, entonces esa parte no entiendo porque!! gracias de antemano

  • @HackZ2266
    @HackZ2266 5 หลายเดือนก่อน +1

    Una pregunta?? Que plugin o extensión usas de intellij idea para que se vean así los iconos o carpetas y otra cosa.. la parte del controllers, cuando haces la conversión de datos de la entidad al dto, eso no se hace en la parte del servicio directamente?? escuché que dijiste eso que todas las funcionalidad se debe hacer en el servicio, eso estoy confundido te agradecería si me puedes explicar eso

    • @unprogramadornace
      @unprogramadornace  5 หลายเดือนก่อน

      Hola, me preguntan frecuentemente sobre la configuración que tengo en mi intellij, por ese motivo hice un vídeo completo en dónde explico mi configuración, te comparto el enlace:
      th-cam.com/video/xyKsnuuHHRI/w-d-xo.html
      Por otro lado, el mapeo de objetos debería hacerse en el Service, en el vídeo por motivos educativos y prácticos lo hicimos en el controller debido a que profesionalmente se usan tecnologías llamadas Mappers, pero eso es otro tema.
      ¡Saludos!

    • @HackZ2266
      @HackZ2266 5 หลายเดือนก่อน

      @@unprogramadornace genial eres un crack, gracias por el dato.. 👌

  • @Youtubeych
    @Youtubeych 5 หลายเดือนก่อน

    Excelente! no entendí el método stream().map en el controller... tendrás un video donde se explica eso? o alguien tendrá una buena explicación en algún link?

    • @unprogramadornace
      @unprogramadornace  5 หลายเดือนก่อน

      Hola, eso quiere decir que tienes falencias en fundamentos de Java 8. Te recomiendo estudiar un poco de programación funcional, por ahora no tengo vídeo sobre ello entonces deberás buscar en Google.
      ¡Saludos!

  • @ivanruiz4984
    @ivanruiz4984 9 หลายเดือนก่อน

    Buenas, tengo otra pregunta, si a postman se le pasa un makerDto, por que cuando incluimos el @JsonIgnore lo hacemos en la entidad Maker y no en MakerDto. Es que veo que al incluir esta anotación en Maker, igualmente si que se muestra la lista de productos en postman.Gracias por tu curso

    • @unprogramadornace
      @unprogramadornace  9 หลายเดือนก่อน

      Hola, en este caso no sería conveniente utilizar @JsonIgnore en el DTO debido a que si haces eso ya no vas a obtener el listado de productos en tu respuesta porque @JsonIgnore le dice a Jackson que no serialice el parámetro. Si lo ponemos en el Entity tampoco causaría problemas aunque lo pusimos allí porque estábamos devolviendo directamente el listado de entity. Pero al usar el DTO ya no es necesaria esa anotación.
      ¡Saludos!

  • @Code-Logan
    @Code-Logan ปีที่แล้ว

    Muy bueno tus vídeos y tu enseñanza excelente ,solo tengo una pregunta, sería mejor o buena práctica dejarle la conversión de entidad a dto al service o a otra capa de abstracción para que Endpoint solo tenga la función de entrada y retorno?

    • @unprogramadornace
      @unprogramadornace  ปีที่แล้ว +2

      Hola, si lo haces en el controller o en el service no hay problema o si quieres abstraer más la aplicación creando otra capa lo puedes hacer, sin embargo ya existen librerías que te hacen el mapeo por ti como mapStruct, orikaMapper, etc. Normalmente esas se usan en el controller. Se tiene la creencia de que el controller solo tiene que tener el llamado al service y ya, y eso no es cierto. El controller puede tener cierta lógica pero no puede ser lógica compleja.
      ¡Saludos!

    • @Code-Logan
      @Code-Logan ปีที่แล้ว

      @@unprogramadornace muchas gracias me aclaras más ideas y conceptos

  • @lucianobertero3276
    @lucianobertero3276 3 หลายเดือนก่อน +3

    No encontré el link del repositorio, pero copié la inserción de los datos sql
    INSERT INTO fabricante(id,nombre) VALUES (1,"Asus");
    INSERT INTO fabricante(id,nombre) VALUES (2,"Lenovo");
    INSERT INTO fabricante(id,nombre) VALUES (3,"Hewlett-packard");
    INSERT INTO fabricante(id,nombre) VALUES (4,"Samsung");
    INSERT INTO fabricante(id,nombre) VALUES (5,"Seageate");
    INSERT INTO fabricante(id,nombre) VALUES (6,"Crucial");
    INSERT INTO fabricante(id,nombre) VALUES (7,"Gigabyte");
    INSERT INTO fabricante(id,nombre) VALUES (8,"Huawei");
    INSERT INTO fabricante(id,nombre) VALUES (9,"Xiaomi");
    INSERT INTO producto(id,nombre,precio,id_fabricante) VALUES (1,"Disco duro STA3 1TB",86.99,5);
    INSERT INTO producto(id,nombre,precio,id_fabricante) VALUES (2,"Memoria RAM DDR4 8GB",120,6);
    INSERT INTO producto(id,nombre,precio,id_fabricante) VALUES (3,"Disco SSD 1 TB",150.99,4);
    INSERT INTO producto(id,nombre,precio,id_fabricante) VALUES (4,"GeForce GTX 1050tu",185,7);
    INSERT INTO producto(id,nombre,precio,id_fabricante) VALUES (5,"GeForce GTX 1080 Xtreme",755,6);
    INSERT INTO producto(id,nombre,precio,id_fabricante) VALUES (6,"Monitor 24 LED Full HD",202,1);
    INSERT INTO producto(id,nombre,precio,id_fabricante) VALUES (7,"Monitor 27 LED Full HD ", 245.99,1);
    INSERT INTO producto(id,nombre,precio,id_fabricante) VALUES (8,"Portatil Yoga 520",559,2);
    INSERT INTO producto(id,nombre,precio,id_fabricante) VALUES (9,"Portatil Ideapd 320",444,2);
    INSERT INTO producto(id,nombre,precio,id_fabricante) VALUES (10,"Impresora HP Deskjet 3720",59.99,3);
    INSERT INTO producto(id,nombre,precio,id_fabricante) VALUES (11,"Impresora HP Laserjet Pro M26nw",180,3);

  • @ronymiranda3551
    @ronymiranda3551 3 หลายเดือนก่อน

    Una duda, por que en el video "DAO vs. DTO: Batalla de Patrones en Diseño de Software " la logica de negocio para retornar el DTO al cliente está en el servicio pero en este video la logica esta en el controlador, es lo mismo? o no es importante

    • @unprogramadornace
      @unprogramadornace  3 หลายเดือนก่อน

      Hola, la logica debe ir en el service, aqui en este video lo hago en el controller simplemente por optimizar tiempo, pero El debe ser es que lo hagas en el service.
      ¡Saludos!

  • @TheSoporte
    @TheSoporte 4 หลายเดือนก่อน

    Estoy en el minuto 30:46 y cuando voy escribiendo el Query Method no me aparece las sugerencias como en el video. Tengo la version 2023.3.6 Community Edition.

    • @unprogramadornace
      @unprogramadornace  4 หลายเดือนก่อน

      Hola, yo uso la versión ultimate. Debe ser eso.
      ¡Saludos!

  • @ingosmalose
    @ingosmalose หลายเดือนก่อน

    Para consumir uno de estos rest api debo implementarlo dentro de un micro servicio para consumirlo desde Angular?

    • @unprogramadornace
      @unprogramadornace  หลายเดือนก่อน

      Hola, no es necesario un microservicio, solo levantas esta APP y listo la puedes consumir. El tema es que debes darle manejo a los cors, que son el mecanismo de de intercambio de datos entre un back y un front.
      ¡Saludos!

  • @cuervolu
    @cuervolu 9 หลายเดือนก่อน +1

    Wenas, muy buen tutorial, me he suscrito a tu canal.
    Aunque tengo una duda, cuando coloco la inyección al servicio o repositorio con @Autowired, me aparece la siguiente advertencia: "Field injection is not recommended" que significa "No se recomienda la inyección en el campo", osea que el método que proporcionas no es recomendado por Spring o algo así, pero me parece raro porque vengo de otros lenguajes y también se usa este tipo de método de manera similar, aunque aveces en un constructor como en Nest.js, por eso me es muy rara la advertencia. Además que el IDE no me indica si debo usar otro método para la inyección de dependencias, asi que me es más confuso aún XD
    Busque en Google y usan algo llamado Spring Context y por lo que entendí, lo inyectán en el constructor o algo así, pero hay que hacer muchos más pasos y honestamente me gusta más tu método de hacerlo.
    Me gustaría saber porque sucede ese warning, ¿y que puedo hacer para evitarlo? ¿O simplemente la ignoro?
    Muchas gracias de antemano.

    • @unprogramadornace
      @unprogramadornace  9 หลายเดือนก่อน

      Hola, efectivamente los beans se guardan en el Spring Context. El warning es completamente normal, pero si quieres resolverlo debes tener en cuenta lo siguiente:
      Existen 3 formas de inyectar un bean: Por autowired, por constructor o por método setter. En este caso yo estoy inyectando por medio de autowired, pero últimamente esa forma se está dejando de usar y por eso te marca el warning, si quieres eliminar el warning solo debes hacer la inyección por medio de método constructor y listo.
      Una aclaración. Cualquiera de los 3 métodos de inyección son correctos y está bien usarlos.
      Saludos.

    • @cuervolu
      @cuervolu 9 หลายเดือนก่อน

      @@unprogramadornace Muchas gracias!

    • @cuervolu
      @cuervolu 9 หลายเดือนก่อน

      @@unprogramadornace Hola de nuevo, estaba terminando el vídeo y surgió este error:
      ERROR: duplicate key value violates unique constraint "fabricante_pkey"
      Detail: Key (id)=(3) already exists.
      2023-12-07T12:19:48.700-03:00 ERROR 60486 --- [nio-8080-exec-7] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.springframework.dao.DataIntegrityViolationException: could not execute statement [ERROR: duplicate key value violates unique constraint "fabricante_pkey"
      Detail: Key (id)=(3) already exists.] [insert into fabricante (nombre) values (?)]; SQL [insert into fabricante (nombre) values (?)]; constraint [fabricante_pkey]] with root cause
      org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "fabricante_pkey"
      Detail: Key (id)=(3) already exists.
      Las diferencias claves que hay es que yo estoy usando Docker con PostgreSQL, pero todo lo demás es exactamente igual, he seguido paso a paso lo que explicaste y esto es lo único que no me funciona.
      Mi teoría es que al usar el archivo de import, hibernate no sabe cual es el ultimo id, por ende empieza del 1 de nuevo. Ya que en un inicio daba error con el id 1, luego copie el código desde github y empezo a aumentar la secuencia. ¿Es debido a que uso PostgreSQL? ¿Qué recomiendas para solucionar este error?

  • @pabloambrogio7300
    @pabloambrogio7300 5 หลายเดือนก่อน

    Hola! Consulto, la lógica no se desarrolla en el service o porque lo haces en los controller? Gracias!!!

    • @unprogramadornace
      @unprogramadornace  5 หลายเดือนก่อน +1

      Hola, la desarrollé en el controller por motivos de economizar un poco de tiempo en el vídeo, pero tienes toda la razón. La lógica debe ir en el servicio.
      ¡Saludos!

    • @pabloambrogio7300
      @pabloambrogio7300 5 หลายเดือนก่อน

      @@unprogramadornace graciass 🙌🏻

  • @arturoocode
    @arturoocode 8 หลายเดือนก่อน

    Tengo una curiosidad porque los atributos en la base de datos en el caso del producto porque no se genera en orden como esta en el modelo de java? es decir primero el id luego el nombre despues el precio. por ultimo la fk ? hay forma de hacer respetar eso?

    • @unprogramadornace
      @unprogramadornace  8 หลายเดือนก่อน

      Hola, en su momento tuve esa misma pregunta, investigué sobre eso y encontré que JPA no maneja un orden en específico sino que lo hace en desorden y lamentablemente no hay forma de darle un orden. Si quieres tener tus atributos de la tabla ordenados es mejor que crees la tabla manualmente y lo dejes que JPA lo haga por ti.
      ¡Saludos!

  • @SuFoles
    @SuFoles 4 หลายเดือนก่อน

    Hola,
    Una duda, la relación entre Makers y Product es Lazy y en la capa de Controller estás, después de llamar al findMaker, accediendo a los productos del maker para transformarlo a DTO, ¿Por qué no estás obteniendo un LazyInitializationException?
    Gracias!
    Un saludo

    • @unprogramadornace
      @unprogramadornace  4 หลายเดือนก่อน

      Hola, es cierto la relacion es con fetch LAZY, eso quiere decir que no se cargará la LISTA hasta que yo explicitamente la llame con El metodo get correspondiente. Como puedes ver, en ese mismo controller yo llamo Al metodo "getProductList", eso hace que Spring Data me devuelva el listado.
      ¡Saludos!

    • @SuFoles
      @SuFoles 4 หลายเดือนก่อน

      Hola,
      Gracias por tu respuesta. Sí, entiendo lo que dices, lo que no entiendo es que siga en ese punto la transacción abierta para hacer el getProducts.
      Un saludo!

    • @santiagoperezposada9493
      @santiagoperezposada9493 4 หลายเดือนก่อน

      ​@@SuFolesHola, creo que te estas confundiendo, la transaccion recien se abre cuando llamo a ese metodo y despues de que ese metodo me responde se cierra la transaccion. Es asi.

  • @axelnival2554
    @axelnival2554 ปีที่แล้ว

    Gracias por el video estimado, veo que tienes una preferencia sobre CrudRepository a JpaRepository, ¿Por que?. Gracias.

    • @unprogramadornace
      @unprogramadornace  ปีที่แล้ว +1

      Hola, existen 3 repositorios bases en jpa:
      CrudRepository, JpaRepository, PaginAndSortingRepository.
      CrudRe. Se usa cuando trabajamos con funcionalidades básicas de un Crud.
      JpaRe. Se usa cuando tienen que usar funcionalidades más avanzadas y también trabajar con procesos batch.
      PaginAndSortRe. Se usa cuando vamos a manejar paginacion en una aplicación.
      Todos sirven para lo mismo pero los repos 2 y 3 extienden de CurdRepository entonces tienen los mismos métodos.
      Uso Crud repository por la simplicidad del repositorios ya que no necesito la funcionalidad extra de los otros pero podrías trabajar con cualquiera.
      ¡Saludos!

    • @axelnival2554
      @axelnival2554 ปีที่แล้ว

      @@unprogramadornace Muchas gracias.

  • @jose_aranda
    @jose_aranda 7 หลายเดือนก่อน

    Hola, en primer lugar felicitaciones muy buen video. Tengo un error en el save "Detail: Ya existe la llave (id)=(1)." cuando lo envío en el postman, que podria ser? (uso postgres, y tengo el strategy en IDENTITY en la entidad)
    Gracias!

    • @unprogramadornace
      @unprogramadornace  7 หลายเดือนก่อน +1

      Hola, significa que estás tratando de guardar un registro que ya existe, se supone que si el registro ya existe se debería actualizar. Es difícil darte una solución específica debido a que debería revisar el código para ver cómo se está trabajando, pero el error está relacionado al ID del registro que estás tratando de guardar.
      ¡Saludos!

    • @jose_aranda
      @jose_aranda 7 หลายเดือนก่อน

      @@unprogramadornace camie la bd a mysql y ya no tuve problema, seguramente es una configuración de postgres lo que me daba el error. Gracias!!

  • @cesarnarvaez7757
    @cesarnarvaez7757 หลายเดือนก่อน

    Hola ...de donde salen las propiedades para la conexión a base de datos

    • @unprogramadornace
      @unprogramadornace  หลายเดือนก่อน

      Hola, las propiedades se setean en el application.properties.
      ¡Saludos!

  • @meshuggah9164
    @meshuggah9164 6 หลายเดือนก่อน

    Gracias por compartir conocimiento, tengo el siguiente error al consumir los métodos Product:
    Handler dispatch failed: java.lang.StackOverflowError
    pareciera que se esta generando un loop, estoy usando la versión 3.2.3 y java versión 17

    • @unprogramadornace
      @unprogramadornace  6 หลายเดือนก่อน +1

      Hola, es complicado darte una solución porque esa excepción puede ser disparada por muchas razones. Trata de comparar tu código con el mío.
      Espero que puedas encontrar el error.
      ¡Saludos!

    • @meshuggah9164
      @meshuggah9164 6 หลายเดือนก่อน

      @@unprogramadornaceya lo he resuelto, en el ProductServiceImpl estaba mal instanciada la variable productDAO

  • @rickhunter8216
    @rickhunter8216 ปีที่แล้ว

    Tio Nace, ¿Por que no usaste la libreria ModelMapper para las DTOs como en videos anteriores?.

    • @unprogramadornace
      @unprogramadornace  ปีที่แล้ว +1

      Hola, los mapping libraries serán un tema para otro vídeo, por ahora quise mostrar la forma tradicional de hacer las cosas para que en futuros episodios se entienda y se evidencie la utilidad de ModelMapper, mapStruct, orikaMapper, etc.
      ¡Saludos!

  • @joseantonioamayapostigo2542
    @joseantonioamayapostigo2542 5 หลายเดือนก่อน

    hasta el minuto 4:39 no he podido levantar el proyecto con eclipse porque inteliJ Idea tiene licencia y no me deja instalarlo ya que lo tuve de prueba y he estado intentandolo con eclipse y o me deja

    • @unprogramadornace
      @unprogramadornace  5 หลายเดือนก่อน

      Hola, puedes usar intellij IDEA en la versión community, esa es gratis. Lamentablemente no puedo ayudarte más porque el error debe ser causado por la configuración de tu PC entonces es difícil darte una solución.
      ¡Saludos!

  • @carlosengui9645
    @carlosengui9645 4 หลายเดือนก่อน

    Buenas,
    No se porque pero cuando me meto en al página para copiar el banner no se ve tan legible como el de tu ejemplo. Lo raro que l primera vez si pero ahora nada. ponga lo que ponga, ilegible.
    Un saludo.

    • @unprogramadornace
      @unprogramadornace  4 หลายเดือนก่อน

      Tal vez sea el tipo de fuente.
      No lo sé.
      Espero puedas solucionarlo.
      ¡Saludos!

  • @nicolasgarcia253
    @nicolasgarcia253 6 หลายเดือนก่อน

    Genio! verias necesario utilizar DTOs en este tipo de proyecto?

    • @unprogramadornace
      @unprogramadornace  6 หลายเดือนก่อน

      Hola, definitivamente si. Los DTO siempre son una pieza muy importante. De hecho debería usarse en la mayoría de proyectos.
      ¡Saludos!

    • @nicolasgarcia253
      @nicolasgarcia253 6 หลายเดือนก่อน

      @@unprogramadornace Estaria muy bueno la incorporacion entonces en el proyecto, que se lo ve excelente, de hecho quisiera replicarlo con DTOs, como te parece que seria ideal hacerlo? utilizando MapStruct claro

    • @unprogramadornace
      @unprogramadornace  6 หลายเดือนก่อน

      @@nicolasgarcia253 Es una idea genial, una aclaración. Los mappers como MapStruct son una cosa y los DTO son otra diferente. Pero en general interactuan juntos. Pero es una gran idea tratar de hacerlo con DTO.
      ¡Saludos!

  • @juandied_dev-iq4ff
    @juandied_dev-iq4ff 7 หลายเดือนก่อน

    No sé si lo dices, pero ¿qué arquitectura usas? Capas ?

    • @unprogramadornace
      @unprogramadornace  7 หลายเดือนก่อน +1

      Hola, efectivamente. Se usa arquitectura en capas.
      ¡Saludos!

  • @ingosmalose
    @ingosmalose 2 หลายเดือนก่อน

    Estoy intentnando ejecutar un procedimiento almacenado usando la anotacion @Query. El procedimiento hace consultas en varias tablas y cree dentro de la carpeta de entidades una entidad para recivir la informacion que devuelva el procedimiento. Pero me muestra el siguiente error
    "Failed to convert from type [java.lang.Object[]] to type [com.application.rest.entities.SP_Inventory] for value [{...}]"

    • @unprogramadornace
      @unprogramadornace  2 หลายเดือนก่อน

      Hola, es dificil darte una solucion debido a que no sé que clase de codigo estas escribiendo, por lo general cuando trabajo con Stored Procedures en JPA lo hago con la anotacion @Procedure, no me gusta usar @Query porque complica mucho las cosas cuando se trabaja con Stored Procedures.
      ¡Saludos!

    • @ingosmalose
      @ingosmalose 2 หลายเดือนก่อน

      @@unprogramadornace estoy usando la misma estructura de archivos que usas en el ejemplo, el archivo makerRepository cree una función adicional de la misma forma que como hiciste para hacer la busqueda por rango de precio, pero encambio de hacer esa consulta hice fue el llamado a un procedimiento almacenado y lo recibo en un List