Тёмный

Domina la creación de APIs REST con Spring Boot 

Un Programador Nace
Подписаться 11 тыс.
Просмотров 30 тыс.
50% 1

Опубликовано:

 

28 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 255   
@diegomejias.r
@diegomejias.r 2 месяца назад
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
@zzz.12M
@zzz.12M 11 дней назад
y lo lograste? xd
@Ana-sn5pb
@Ana-sn5pb 7 месяцев назад
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 месяцев назад
Muchas gracias por comentar. Los mappers son un tema que trataré en un vídeo específico más adelante. ¡Saludos!
@ronaldgarciavazquez8232
@ronaldgarciavazquez8232 Год назад
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!
@rickhunter8216
@rickhunter8216 Год назад
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 Год назад
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
@lucianobertero3276
@lucianobertero3276 4 месяца назад
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);
@leandroj.gonzalez6436
@leandroj.gonzalez6436 3 месяца назад
Gracias!
@jorgefernandezblanco7466
@jorgefernandezblanco7466 2 месяца назад
@@leandroj.gonzalez6436 gracias sir
@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.
@michaelpadilla1769
@michaelpadilla1769 4 месяца назад
Excelente video! Seria un gran aporte un tutorial de manejar excepciones con spring boot para apis rest
@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!
@brauliomariano
@brauliomariano 10 месяцев назад
Magnífico!!! muchas gracias por compartir el conocimiento. Saludos.
@JonatanTajadaRico-t2g
@JonatanTajadaRico-t2g 2 месяца назад
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 2 месяца назад
Hola, gracias por comentar. Tomaré en cuenta tu sugerencia. ¡Saludos!
@amoMiFlia
@amoMiFlia 9 месяцев назад
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 месяцев назад
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!
@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!
@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
@AdrianRodriguez-vk1yf
@AdrianRodriguez-vk1yf 5 месяцев назад
lindo
@johnnattanrincon9608
@johnnattanrincon9608 8 месяцев назад
Me encantan tus videos profe de lo mejor!!
@donas19
@donas19 3 месяца назад
Excelente video muy bien explicado.
@emerson.dvlmt.g
@emerson.dvlmt.g Год назад
De lo mejor en contenido, muy agradecido
@Amauta20
@Amauta20 22 дня назад
Excelente aporte, por favor puedes compartir los archivos de trabajo
@Amauta20
@Amauta20 20 дней назад
Ojala puedas subir al Git los archivos de trabajo
@edurcdev
@edurcdev Год назад
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 Год назад
El tema de llama Gradianto y los iconos Atom icons. ¡Saludos!
@Nacho-jf3dj
@Nacho-jf3dj 9 месяцев назад
Excelente video, me ayudó a entender muchas cosas
@DnlMrtz
@DnlMrtz 3 месяца назад
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 3 месяца назад
Hola, es un primcipio de inyeccion de dependencias, siempre debes inyectar la interface y spring se encargará de buscar la implementacion por ti. ¡Saludos!
@ernestofavio6735
@ernestofavio6735 9 месяцев назад
Muchas gracias, he aprendido mucho.
@unprogramadornace
@unprogramadornace 9 месяцев назад
Genial. ¡Saludos!
@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!
@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 Год назад
Hola, la respuesta es sí. Un vídeo sobre microservicios está dentro de los planes. ¡Saludos!
@arletteportus
@arletteportus Год назад
Excelente, muchas gracias!
@unprogramadornace
@unprogramadornace Год назад
Gracias por comentar. ¡Saludos!
@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!
@luisargandona8761
@luisargandona8761 5 месяцев назад
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 5 месяцев назад
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 5 месяцев назад
@@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 5 месяцев назад
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!
@FernandoDiegoSantillanVaras
@FernandoDiegoSantillanVaras 4 дня назад
en mi caso al no poner el @JsonIgnore al intentar hacer la consulta de la api me salia una referencia circular { "id": 2, "name": "Lenovo", "productList": [ { "id": 8, "name": "Portatil Yoga 520", "price": 559.00, "maker": { "id": 2, "name": "Lenovo", "productList": [ { "id": 8, "name": "Portatil Yoga 520", "price": 559.00, "maker": { "id": 2, "name": "Lenovo", "productList": [ { "id": 8, "name": "Portatil Yoga 520", "price": 559.00, "maker": { "id": 2, "name": "Lenovo", "productList": [ ....
@HackZ2266
@HackZ2266 6 месяцев назад
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 6 месяцев назад
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: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-xyKsnuuHHRI.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 6 месяцев назад
@@unprogramadornace genial eres un crack, gracias por el dato.. 👌
@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!
@meshuggah9164
@meshuggah9164 7 месяцев назад
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 7 месяцев назад
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 7 месяцев назад
@@unprogramadornaceya lo he resuelto, en el ProductServiceImpl estaba mal instanciada la variable productDAO
@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!
@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 месяцев назад
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!!
@juandied_dev-iq4ff
@juandied_dev-iq4ff 7 месяцев назад
No sé si lo dices, pero ¿qué arquitectura usas? Capas ?
@unprogramadornace
@unprogramadornace 7 месяцев назад
Hola, efectivamente. Se usa arquitectura en capas. ¡Saludos!
@cesarivanurbinah.9884
@cesarivanurbinah.9884 10 месяцев назад
Parce, ¿qué fuente está utilizando en el IDE?
@unprogramadornace
@unprogramadornace 10 месяцев назад
Hola, en plugin se llama gradianto. ¡Saludos!
@carlosandresmahechalozada8564
@carlosandresmahechalozada8564 11 месяцев назад
Parce como te mantenes tan actualzado que recursos utilizas ??Saludos
@unprogramadornace
@unprogramadornace 11 месяцев назад
Hola, usualmente suelo ingresar de vez en cuando a las documentaciones para ver los nuevos cambios, también googleando un poco sobre las tecnologías que uso pero en general siempre el mejor lugar para buscar información es la documentación oficial. ¡Saludos!
@byandrev
@byandrev Год назад
Geniooooo 💯
@navdenai
@navdenai 2 месяца назад
Quiero descargar el proyecto completo y no se a que URL ir... Podrías ayudarme?
@unprogramadornace
@unprogramadornace 2 месяца назад
Hola, por desgracia el repositorio donde estaba el código fuente ya no está disponible a causa de un problema que tuve con los repos en su momento. ¡Saludos!
@navdenai
@navdenai 2 месяца назад
@@unprogramadornace gracias de todas forma, saludos
@ronaldgarciavazquez8232
@ronaldgarciavazquez8232 Год назад
Siempre que escucho que la lógica debe implementarse en el service, pensaba que en el service también se validaba y que el controlador quedaba muy limpio de código, me puedes despejar la duda por favor
@unprogramadornace
@unprogramadornace Год назад
Hola, si tienes que validar datos puedes hacerlo en el controller sin problema, es más si usas la librería de Validation para hacer una validación más apropiada siempre se hace desde el controller. El service se usa para ejecutar lógica compleja, allí encuentras la funcionalidad en sí de la aplicación. Es común que en aplicaciones empresariales encuentres controladores gigantes, entonces no siempre queda tan limpio pero lo importante es que la arquitectura de la aplicación maneje un alto desacoplamiento y lo ideal es que tú le envíes al service datos correctos y limpios para que haga lo que tenga que hacer. ¡Saludos!
@ronaldgarciavazquez8232
@ronaldgarciavazquez8232 Год назад
@@unprogramadornace Agradezco mucho tus comentarios, así también la experiencia de ver los dto y sus conversión directa.
@SheeM1700
@SheeM1700 3 месяца назад
sirve despues de 11 meses? o cambian muchas cosas?
@unprogramadornace
@unprogramadornace 3 месяца назад
Claro que si, funciona. ¡Saludos!
@davidsalazar1440
@davidsalazar1440 Год назад
Hola, estas usando intellij idea de pago o community?
@unprogramadornace
@unprogramadornace Год назад
Hola, uso la versión community. ¡Saludos!
@leandrogutierrez773
@leandrogutierrez773 Год назад
Como pocos videos , muy bien explicado , podrías por favor ampliar lo de los query methods , gracias.
@wellingtonreyes7243
@wellingtonreyes7243 3 месяца назад
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 3 месяца назад
Muchas gracias por tu comentario y por tomarte el tiempo de escribirlo. ¡Saludos!
@FernandoDiegoSantillanVaras
@FernandoDiegoSantillanVaras 4 дня назад
muchas gracias por el aporte brother, muchas felicidades por tu canal!!
@cuervolu
@cuervolu 9 месяцев назад
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?
@yovanies2798
@yovanies2798 8 месяцев назад
Un verdadero maestro, 1 de 1000 un verdadero y completo tutorial. aquí un seguidor. felicidades maestro.
@unprogramadornace
@unprogramadornace 8 месяцев назад
Bienvenido a la comunidad. ¡Saludos Crack!
@urtaav639
@urtaav639 8 месяцев назад
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
@jesusbautista9258
@jesusbautista9258 Месяц назад
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 Месяц назад
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!
@AngelMendoza-zr8cc
@AngelMendoza-zr8cc 21 день назад
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 21 день назад
Hola, tienes toda la razón. Es un pequeño detalle que pasé por alto. Es genial tu apreciación. ¡Saludos!
@zzz.12M
@zzz.12M 10 дней назад
que video tan GOD
@TheSoporte
@TheSoporte 5 месяцев назад
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 5 месяцев назад
Hola, yo uso la versión ultimate. Debe ser eso. ¡Saludos!
@jorgetapia4633
@jorgetapia4633 8 месяцев назад
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 8 месяцев назад
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.
@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!
@ronymiranda3551
@ronymiranda3551 4 месяца назад
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 4 месяца назад
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!
@juanpabloleal3013
@juanpabloleal3013 5 месяцев назад
hola gracias por el video, tengo una duda debo descargar el SQL? por que vi que mostrate saludos.
@unprogramadornace
@unprogramadornace 5 месяцев назад
Hola, claro que sí. Doy por sentado que ya tienes el SQL y el workbech instalado. ¡Saludos!
@AngelMendoza-zr8cc
@AngelMendoza-zr8cc 21 день назад
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 21 день назад
Hola, la anotación @Builder te permite usar el método builder para construir los objetos. ¡Saludos!
@danielaescobar497
@danielaescobar497 5 месяцев назад
gracias por el tutorial profe!!
@ingosmalose
@ingosmalose 2 месяца назад
Para consumir uno de estos rest api debo implementarlo dentro de un micro servicio para consumirlo desde Angular?
@unprogramadornace
@unprogramadornace 2 месяца назад
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!
@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!
@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!
@jesuspabloavioli4372
@jesuspabloavioli4372 11 месяцев назад
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 месяцев назад
Hola muchas gracias comentar, tendré en cuenta tu sugerencia. ¡Saludos!
@FernandoDiegoSantillanVaras
@FernandoDiegoSantillanVaras 4 дня назад
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); => para los que usan postgressSQL como lo estoy usando
@Jean_F12
@Jean_F12 11 месяцев назад
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!
@jessecg5508
@jessecg5508 Год назад
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 Год назад
Vale, tendré en cuenta tu sugerencia. ¡Saludos!
@cesarnarvaez7757
@cesarnarvaez7757 2 месяца назад
Hola ...de donde salen las propiedades para la conexión a base de datos
@unprogramadornace
@unprogramadornace 2 месяца назад
Hola, las propiedades se setean en el application.properties. ¡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
@MrDev1024
@MrDev1024 10 месяцев назад
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 10 месяцев назад
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
@irvinfernandofrias797
@irvinfernandofrias797 6 месяцев назад
Donde esta el repositorio para bajarlo?, me marca error al crear las entidades
@unprogramadornace
@unprogramadornace 6 месяцев назад
Hola, hace poco perdí el acceso a 3 repositorios, entre ellos este. Si revisas las noticias del canal te enterarás de lo que pasó. Ya estoy trabajando para regrabar un video explicando nuevamente estos conceptos. Saludos.
@develomentsystemnrg9902
@develomentsystemnrg9902 8 месяцев назад
Nuevamente te felicito, quedan aun mas afianzados los conocimientos de Spring Boot. Un abrazo grande amigo
@unprogramadornace
@unprogramadornace 8 месяцев назад
Muchas gracias por comentar. 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 месяца назад
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.
@johnherrera5913
@johnherrera5913 10 месяцев назад
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!
@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.
@devripxy
@devripxy Год назад
Gracias por el aporte a la comunidad, muchas gracias.
@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 месяца назад
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 2 месяца назад
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 2 месяца назад
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. ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-XgUEjrTX9Bs.htmlsi=AetgL0-UHRreQWKG ¡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 RU-vid. Obviamente habilitamos los anuncios para ganar al menos un poco por los videos, pero los anuncios los pone directamente RU-vid y no los RU-vidrs. ¡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
@FernandoFernandez-go1uf
@FernandoFernandez-go1uf 2 месяца назад
muy buen video, bien esplicado, muchas gracias, si pudiera tener el proyecto mucho mejor
@ingosmalose
@ingosmalose 2 месяца назад
Se pueden agregar paginas HTML dentro de este mismo projecto, o se debe seguir una estructura diferente?
@unprogramadornace
@unprogramadornace 2 месяца назад
Hola, esto es una API Rest, no seria buena idea agregar HTML directamente sino hacerlo con un Front end aparte. Si quiseras agregar HTML directamente habria que crear una API hecha con Spring MVC. ¡Saludos!
@ingosmalose
@ingosmalose 2 месяца назад
@@unprogramadornace se puede decir que un microservicio es lo mismo que un API-REST? si son diferentes cual es la diferencia?
@carlosrodriguez-kz8rm
@carlosrodriguez-kz8rm Год назад
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 Год назад
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 Год назад
Bro, estoy de acuerdo contigo. ¿Qué canal recomiendas que haga excelente contenido en español? Aparte de este, claro está.
@carlosrodriguez-kz8rm
@carlosrodriguez-kz8rm Год назад
@@brandonrodriguez935 este canal claro, TodoCode, Sacavix Tech, Lucas Moy y una colección enorme de programadores de la India!!!😂😂😂
@dannyprats824
@dannyprats824 6 месяцев назад
Tremendo!! ..se nota que sabe lo que hace. Podría por favor subir a github el proyecto?
@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 месяцев назад
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 🙌🏻
@ingosmalose
@ingosmalose 2 месяца назад
Excente tutorial. Dices que fue un poco largo pero completamente funcional, vale completamente la pena.
@eliodoromancera2093
@eliodoromancera2093 6 месяцев назад
Yo hice un CRUD algo similar, pero en ves de crear las bases de datos desde el codigo lo hice en el workbench
@alpaquitay8974
@alpaquitay8974 4 месяца назад
seria interesante un video tuyo sobre programacion funcional, te haces entender muy bien...
@nicolasgarcia253
@nicolasgarcia253 7 месяцев назад
Genio! verias necesario utilizar DTOs en este tipo de proyecto?
@unprogramadornace
@unprogramadornace 7 месяцев назад
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 7 месяцев назад
@@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 7 месяцев назад
@@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!
@alejandrocastano5763
@alejandrocastano5763 3 месяца назад
tenia que ser paisa, muy buen tutorial felicidades profesor
@amoMiFlia
@amoMiFlia Год назад
Gracias por enseñar, me estaban matando las relaciones y mas claro no me pudiste dejar,,,,,
@alexisantoniojimenezjoaqui6776
@alexisantoniojimenezjoaqui6776 6 месяцев назад
QUE NECESITO INSTALAR O CONFUGURAR. QUIERO EMPEZAR APRNEDER SPRING BOOT. AYUDA..
@unprogramadornace
@unprogramadornace 6 месяцев назад
Necesitas solo instalar el IDE Spring tools suite y ya. Si vas a comenzar con Spring boot ya deberías saber JAVA, por ende ya tienes que tener instalado el jdk. ¡Saludos!
@alexisantoniojimenezjoaqui6776
@alexisantoniojimenezjoaqui6776 6 месяцев назад
@@unprogramadornace hacr año vi java. Tengo conocimientos basicos. O que mas necesito?
@unprogramadornace
@unprogramadornace 6 месяцев назад
Descarga el Spring tools suite como te dije en el comentario anterior y listo. Ponte a programar con Spring. ¡Saludos!
@alexisantoniojimenezjoaqui6776
@alexisantoniojimenezjoaqui6776 6 месяцев назад
@@unprogramadornace he visto tu canal, hay como una secuencia para aprender?.. Todos tus videos son interesantes.. Y no se que orden seguir amigo
@unprogramadornace
@unprogramadornace 6 месяцев назад
Hola, puedes comenzar por el vídeo de "Spring boot aplicación completa". Es un buen lugar para empezar.
@AlexSearchYT
@AlexSearchYT 4 месяца назад
Excelente explicación!
@HackZ2266
@HackZ2266 6 месяцев назад
Muy buena explicación Bro, se entendio muy bien....
@Unknown-so7qv
@Unknown-so7qv Год назад
Genial el video, espero te animes a hacer uno sobre los Query methods
@diegogigena6350
@diegogigena6350 7 месяцев назад
El package 'services' es lo mismo que llamarlo 'controller' ?? Me sacan esa duda
@unprogramadornace
@unprogramadornace 7 месяцев назад
No, son dos cosas diferentes. En el package 'controller' tienes los endpoints de la aplicación y en el 'service' tienes la lógica de la aplicación. ¡Saludos!
@diegogigena6350
@diegogigena6350 7 месяцев назад
@@unprogramadornace es que me marea eso de las carpetas ,service,controller , repository
@unprogramadornace
@unprogramadornace 7 месяцев назад
@@diegogigena6350 Jajaja! Ámalo, porque te lo encontrarás hasta en la sopa. Se llama arquitectura en capas. ¡Saludos!
@diegogigena6350
@diegogigena6350 7 месяцев назад
@@unprogramadornace si si eso se, todavía no entiendo bien el flujo ,hay alguna pag aparte donde puede ver sobre eso ...., como recién estoy entrandon a spring boot
@unprogramadornace
@unprogramadornace 7 месяцев назад
@@diegogigena6350 Mmmm! Disculpa, no tengo ninguna en mente.
@oecarrillo
@oecarrillo 5 месяцев назад
Gracias por compartir tu conocimiento, Bendiciones
@thiagolopez4999
@thiagolopez4999 Год назад
Excelente! Para los que usan Postgres, hay que actualizar la secuencia en la BD.
@israelsalinas2211
@israelsalinas2211 Год назад
Excelente video, muchas gracias por compartir su conocimiento.
@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!
@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!
@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.
@unprogramadornace
@unprogramadornace 8 месяцев назад
Lo tendré en cuenta. ¡Saludos!
@isaiasvillarrealrubio4074
@isaiasvillarrealrubio4074 Год назад
Tengo una duda, el método save() de la interfaz CrudRepository no hace el update en caso de que ya exista el recurso?
@unprogramadornace
@unprogramadornace Год назад
Hola, si el registro ya existe el metodo save() actualizará el registro tal como lo has dicho. !Saludos!
@luiszapata563
@luiszapata563 5 месяцев назад
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 5 месяцев назад
Muchas gracias por comentar. Me alegra que mi contenido sea de utilidad para ti. ¡Saludos!
@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!
@rickhunter8216
@rickhunter8216 Год назад
Tio Nace, ¿Por que no usaste la libreria ModelMapper para las DTOs como en videos anteriores?.
@unprogramadornace
@unprogramadornace Год назад
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!
Далее
SPRING BOOT + API REST + JPA + QUERY METHOD + DTO
37:24
pumpkins #shorts
00:39
Просмотров 9 млн
Brutally honest advice for new .NET Web Developers
7:19
Laravel vs Rails for Javascript developers
19:50
Просмотров 2,5 тыс.
How principled coders outperform the competition
11:11
Being Competent With Coding Is More Fun
11:13
Просмотров 81 тыс.
Spring Boot 3: Guía de Microservicios
2:36:26
Просмотров 53 тыс.
Redis за 20 минут
23:22
Просмотров 140 тыс.
pumpkins #shorts
00:39
Просмотров 9 млн