Hola amigo gracias por el video, solo mencionar un ajuste para los que hayan tenido el mismo error: con el método Update que es justamente el que no probaste jaja, este medio problemas asique ahí me cranee la cabeza para ver que sucedía ya que estoy aprendiendo, y bueno di con la siguiente solución. Probando la aplicación me di cuenta que en el método update no cumplía su función ya que en al controlador le faltaba el @PathVariable, luego de este cambio la solicitud me devolvía un 200 pero al listar me daba cuenta que la información no había sido guardada, ósea el objeto no había sido actualizado, asique volví al service y me di cuenta que al final del método faltaba usar el método save del repositorio para que se guardaran estos cambios que se habían realizado. Finalmente el update del service quedo asi: public UserModel updateByID(UserModel request, Long id ){ UserModel userModel = userRepository.findById(id).get(); userModel.setName(request.getName()); userModel.setLastName(request.getLastName()); userModel.setEmail(request.getEmail()); userRepository.save(userModel); return userModel; } Luego el controlador asi: @PutMapping(path = "{id}") public UserModel updateUserById(@RequestBody UserModel request ,@PathVariable Long id){ return this.userService.updateByID(request, id); }. Tras finalizar con estos pequeños cambios el crud por fin funcionaba ok. De igual forma si el error era otra cosa que aun no veo por mi poca experiencia háganmelo saber :)
Muy buenas Leonardo, muchas gracias por tomarte el tiempo de compartir tu solución y experiencia con el método Update. Me alegra saber que pudiste resolver el problema y que estás aprendiendo en el proceso. Tu aporte es valioso y estoy seguro de que ayudará a otros que puedan enfrentarse a la misma situación, mil disculpas por el error, soy consciente de que a veces me enrrollo mucho hablando y por eso procuro tomar consciencia de no alargar los vídeos más de la cuenta, en este caso al no realizar la comprobación no caí en la cuenta de que no estaba correcto, aun así estoy muy orgulloso de que hayas sido capaz de resolverlo, al fin y al cabo en esto consiste la programación, resolver problemas. Voy a fijar tu comentario en la sección de comentarios del video para que otros puedan encontrar fácilmente tu aporte y aplicar la solución que proporcionaste en caso de que se encuentren con el mismo error. De nuevo, gracias por tu contribución y no dudes en seguir compartiendo tus descubrimientos y aprendizajes en futuros videos. ¡Sigamos creciendo y aprendiendo juntos! Un fuerte abrazo!!!! 😊
Un video muy completo la verdad donde se explica el paso a paso la guía orientativa y para quienes no conocen estas herramientas, muy sencillo de programar aunque un poco extenso, pero nada mal.
Llegará, de hecho tengo pensado para el año que viene empezar a hacer directos y, entre otras cosas, un proyecto completo con los que os vayais pasando. Allí te espero. (Es posible que antes haga un vídeo de como hacerlo). Un saludo.
Excelente turorial quedo perfecto realmente me funcionaron 3 de los cuatro metodos ya que en el update falto un detalle que no comprendia el porque no se me guardaban los datos al actualizarlos usando el postman, investigue un poco y habria que agregar en el return del update el save de esta manera => return userRepository.save(user); para que se guardaen los datos que se estan actualizando. Aun asi del resto de verdad aprendi muchisimo muchas gracias por este tutorial...
Muchas gracias por tus palabras, Yerinson. Disculpa la tardanza en responder, a veces se me escapa algún comentario de TH-cam y lo veo cuando entro en TH-cam Studio a revisar. Me alegro de que te haya sido de utilidad el vídeo y muchas gracias por la corrección. Un fuerte abrazo!
Hoy tuve una entrevista laboral y hacía rato que no tocaba Spring Boot por proyectos del trabajo, por lo que anoche y esta mañana practiqué con tu video y me fue súper útil para refrescar conceptos 😄 Ahí va la sub, muchas gracias Daniel!
¡Muchas gracias por tu comentario LuRdrigz! No tienes idea de cuánto me alegra leer que el video te ayudó a prepararte para tu entrevista laboral. Ese es precisamente el objetivo, ofrecer una herramienta útil para refrescar conceptos y mantenerse al día con Spring Boot. Estoy realmente agradecido por tu suscripción y apoyo. Si tienes alguna otra área o concepto sobre el que te gustaría que haga un video, no dudes en decírmelo. Un fuerte abrazo! 🤘🏻
Este tuto es uno de los mejores en español, simplemente por que organiza muy bien los paquetes y explicas muy bien los componentes de la aplicación, F E L I C I D A D E S colega y gracias. Me pude hacer un end point funcional con OpenJDK 15, Springboot y MySQL. Saludos desde 🇲🇽
WOW!! Muchas gracias por tu comentario, sube bastante el ánimo y la motivación para seguir creando este tipo de contenido. En principio, lo que muestro aquí es completamente funcional a la hora de usar OpenJDK 15. En este caso he utilizado Java 8 por que es lo que utilizo en mi trabajo, pero he realizado el CRUD exactamente igual usando Java 20 y ha funcionado sin ningún problema. Un fuerte abrazo!
Muchas gracias, CR. Creo que es importante poner foco en los detalles ya que quien está aprendiendo necesita entender el porqué de las cosas (O así es como me lo tomo yo). Te invito a suscribirte al canal para no perderte nada de lo que vaya subiendo. Un fuerte abrazo! 🙂
Gracias a tí por comentar, David. No sabes lo util que es todo el feedback que recibo para motivarme a crear nuevos vídeos. Me alegra de que te haya sido de utilidad. Un fuerte abrazo! 🙂
Muchas gracias por tu comentario Nacho! La verdad es que hace un año decidí hacer un cambio en mi vida a nivel profesional y la verdad es que ha sido un buen cambio. 😁
Muchas gracias por compartir el contenido. Resulta muy útil como introducción rápida. Quería hacer un apunte constructivo sobre un par de términos que se usan mucho: - private: se pronunciaría _praivit_. - public: se pronunciaría _pablic_. Somos hispanohablantes y no tenemos por qué saberlo pero no está de más dado que se usa tanto. Una sugerencia para las clases de los modelos es emplear Lombok para, mediante anotaciones, generar automáticamente los constructores, getters, setters... De nuevo, buen aporte. Gracias
Muchas gracias por el aporte, me tengo que poner las pilas con el inglés. 😅 El tema de lombok, no he conseguido que vaya en mi pc y tampoco he querido dedicarle mucho tiempo a mirar por qué pasa... Aunque en cuanto pueda me pondré a ello. De nuevo, gracias por el aporte. Un fuerte abrazo! 🤘🏻
Muy buena explicacion se nota tu compromiso por enseñar..... Solo una Observacion (que no tiene que ver con el tema). Pienso que el circulo donde esta tu imagen deberia estar del lado izquierdo de la pantalla
que gran video hermano ando aprendiendo a usar springboot y springsecurity jajaj y yo para las clases uso lombok me ahorra muchisimo tiempo haciendo los modelos jaja y es genial
Muchas gracias por tu comentario, Daniel. Pronto subiré un vídeo bastante completo sobre Spring Security, así que suscríbete al canal para no perdertelo. En cuanto saque tiempo lo grabo. Un fuerte abrazo!
Muchas gracias por tu comentario, Fabian. Me alegra mucho que aprendas con mis vídeos. Si en cualquier momento te surge alguna duda, no tengas reparo en comentar. Estoy aquí para ayudar. Un fuerte abrazo!
Excelente video , una pequeña recomendación por ahí achicar o correr un poquito tu cámara , por que en muchas veces tapa las lineas de código que vas tirando sobre la derecha y como que tuve que esperar que adelantes el código para poder verlo cuando scrolleabas para arriba , pero muy buen video , gracias !!.
Muchas gracias por tu comentario, en siguientes vídeos lo estoy teniendo en cuenta y voy realizando cambios de cámara para que se pueda ver todo el codigo. Mil disculpas por las molestias ocasionadas en ese sentido y espero seguir viendote en futuros videos. Un abrazo!
Muchas gracias, me alegro de que te haya servido. Si te surge cualquier duda o quieres que haga un vídeo sobre lo que sea, se aceptan sugerencias y, si lo conozco y puedo, lo haré. Un saludo 🙂🤘🏻
Muchas gracias por tu comentario. Pues justamente tengo en el canal cursos de HTML, CSS y JavaScript donde enseño a realizar peticiones HTTP. Aun así me lo apunto para hacer un vídeo específico de eso. Un saludo.
Incluso un absoluto novato en java como yo ha podido entender el 80-90% de lo explicado en el vídeo, así que mis más sinceras felicitaciones. Eso sí, como novato total, ni idea de cómo crear la base de datos (entiendo que con MySQLWorkbench) o qué es y cómo manejar/crear postman para poder testear la API. Si alguien puede señalarme el camino para aprender al respecto se lo agradecería 🙂
Muchas gracias por tu comentario. En cuanto a MySQL, tengo un vídeo que te puede ayudar: th-cam.com/video/Fh0eAzfvPTI/w-d-xo.html Espero que sea de tu agrado, un fuerte abrazo! 🙂
Hace tiempo que no lo tengo, pero creo recordar que es de una extensión llamada: Pokemon Progress Puedes configurar el pokemon que quieres que te aparezca. Un saludo.
Excelente master, buenos conceptos, falto lo del probar los métodos Put y Delete desde Postman(Para agregar los parametros). Igualmente gracias por el conocimiento. Saludos
Muchas gracias por tus palabras, Camilo. Tendré en cuenta para futuros vídeos probar todo lo que hago. Si necesitas ayuda con cualquier cosa, no tengas reparo en preguntar. Un abrazo!
Es algo que tengo en mente corregir en el futuro, he pensado incluso en no salir yo, pero se que a mucha gente le gusta ese trato mas personal. Lo que acabaré haciendo es ir cambiando el circulo de sitio. Me alegro mucho de que te haya gustado Carlos, cualquier duda no tengas reparo en comentarla por aquí. Un abrazo! 🙌🏻
Cojonudo video, en mi caso en lugar de MySQL he usado una H2 con su debida adaptacion respecto a llamar user al path jajaja, brutal seguire por este canal un buen tiempo
Muchas gracias por tus palabras, no sabes lo que motiva leer este tipo de comentarios. Si tienes alguna sugerencia que crees que pueda ser interesante, no tengas reparo en comentar. Tengo varios vídeos en el tintero que quiero hacer como Spring Security o Java IO. Un fuerte abrazo!
Muchas gracias por tu comentario. La verdad es que no utilizo arquitectura de capas, en este caso, lo que estoy utilizando es MVC (Modelo Vista Controlador). Es una arquitectura que es bastante sencilla para empezar y que es fácil de comprender. Aunque si te animas, tengo un vídeo sobre Arquitectura Hexagonal que te ayudará a comprender cómo funcionan las arquitecturas por capas: th-cam.com/video/JD_ZL3Bnaog/w-d-xo.html Un abrazo!
¡Hola Erick! ¡Mil gracias por tu comentario! Me pone súper contento saber que te gustó el video y te fue útil. Si tienes preguntas o sugerencias para futuros videos, no dudes en compartirlas. No olvides suscribirte al canal y activar la campanita para estar al tanto de más contenido genial. ¡Un fuerte abrazo y nos vemos en el próximo video! 😁🎉🚀
hola hermano saludos desde venezuela.... gracias por los tutos son muy buenos y una pequeña cosa, la miniatura de tu cara podria ponerla mas pequeña o mas lejos de las lineas de texto hay momentos que tapas lo que escribes
Excelente video que explica todo lo basico, ahora que estoy haciendo un crud pequeño veo que entity ahora es con jakarta en vez de javax ? ya no se utuliza javax ? o como esta el asunto, gracias,
Me alegro que te haya gustado el video. En respuesta a tu pregunta, sí, en el 2021, Java EE fue renombrado a Jakarta EE. Esto se debe a que Oracle, que era el propietario de Java EE, decidió donarlo a la Fundación Eclipse. La Fundación Eclipse es una organización sin ánimo de lucro que se dedica a promover el desarrollo de software libre y de código abierto. El cambio de nombre de Java EE a Jakarta EE no ha afectado a la API, que sigue siendo la misma. La única diferencia es que el prefijo de todos los paquetes ha cambiado de javax a jakarta. Por ejemplo, el paquete javax.persistence se ha convertido en jakarta.persistence. Espero haber solucionado tu duda, un saludo! 🙂🙌
Buenos dias En primer lugar felicitarte por este impresionante aporte. He captado los conceptos a la primera. Agradecértelo siempre será poco. He realizado la práctica desde el principio, pero adaptándola a una bbdd remota que poseo en un servidor web que tengo contratado. He cometido algún error y me gustaría saber si tienes este código en algún repositorio para ver que diferencias y/o errores puedo haber cometido. Muchas gracias.
Muchas gracias por tus palabras, Jesús. Leer comentarios como el tuyo motivan a seguir creando este tipo de contenido. Exantamente el mismo ejercicio no lo tengo, lo tengo mejorado. En este que te paso, en los controladores utilizo ResponseEntity, que es mucho mejor para gestionar los errores. Espero que te ayude, aquí te dejo el link: github.com/DanielEspanadero/spring-crud-complete Un abrazo y muchas gracias de nuevo por tus palabras 🙂🤘🏻
Muchas gracias por tu comentario, Carlos. Justamente tengo un vídeo sobre MySQL donde lo enseño a hacer todo de manera manual, espero que te sirva: th-cam.com/video/Fh0eAzfvPTI/w-d-xo.html Un abrazo! 😀🤘🏻
Muy buenas Rubén, muchas gracias por tu comentario. Poco a poco, piensa que la programación es una carrera de fondo. Si tienes cualquier duda no tengas reparo en preguntar y estaré encantado de responderte a lo que necesites. Un abrazo!
@@danielespanadero Gracias, es solo que quería hacer un CRUD para empezar portafolio y la verdad es que cada uno lo hace de una manera, el tuyo me llamo la atención pq es muy distinto y seguro que más profesional. Un saludo 🫡
Primero que nada muchas gracias por tan buen contenido! Realmente es súper didáctico el video! Nada más me quede con una pequeña duda. 8:15 Como sería la arquitectura de archivos y carpetas en un proyecto más grande? Se dividirán por entidad en lugar de funcionalidad?
Muchas gracias a tí por comentar! Pues el tema de arquitectura es algo complejo ya que depende de lo que vayas a hacer hay infinidad de opciones, en apps gigantescas se podrían utilizar microservícios, que consiste en separar la aplicación en partes muy pequeñas, conectadas entre sí pero independientes, es decir, que si una de esas partes deja de funcionar, el resto de los microseevicios siguen funcionando. Para apps no tan gigantes tienes otras opciones como la arquitectura hexagonal o DDD (Domain Driven Design) que ayuda dividiendo la app en capas, la capa de dominio, de aplicación y de infraestructura... Haré un vídeo sobre el tema ya que es algo bastante extenso para un comentario. Un saludo y feliz año!!
Hola, Muchas gracias, excelente video… solo me queda una duda Pude ver que la conexión a tu base de datos es local, pero aun así tus peticiones se demoran en responder (mas de lo que se debiera) ¿Este problema puede ser por java? ¿Tu computador? Te pregunto por qué justamente he visto algunos proyectos con java spring boot que presentan alguna lentitud (más de lo normal), por ejemplo lo comparo con nodejs y express y esas mismas request se demoran menos de 200 ml gracias y quedo atento
Muchas gracias por tus palabras. El problema en ese caso era la computadora que estaba utilizando. Un MacBook pro del año 2015 con 8GB de RAM y un procesador intel core i5 de la época. Ya solo en arrancar el servidor tardaba 20 veces más que la laptop que utilizo ahora. Un abrazo!
Muchas gracias por tu aporte Carlos, creo que sería interesante hacer vídeos más cortos explicando este tipo de cosas, los que hago son muy elaborados y no puedo parar a explicar cada detalle para no alargarlo más de la cuenta. Un fuerte abrazo! 🙂🤘🏻
creo que no funciona pq no se llega a persistir los datos, agrega esto: "this.iUserRepository.save(user);" seguido de "user.setEmail(request.getEmail());"
Hola! Lo primero muchas gracias por el video me ha servido mucho. Tengo una duda y es que mi petición http me devuelve 401 unauthorized, estoy usando spring boot security. Tienes idea de como solucionarlo?
Muy buenas, al utilizar Spring Securiry me imagino que tienes las rutas protegidas y te has de autenticar. Aquí te comparto un vídeo que hice bastante completo sobre Spring Security que te puede ayudar: th-cam.com/video/Qu3soRF168I/w-d-xo.html Un saludo 🙂🤘🏻
Me alegra mucho que te hayas suscrito, Ivan. ¡Bienvenido a nuestra comunidad! Agradezco tu apoyo y no dudes en compartir tus pensamientos, preguntas o sugerencias sobre los próximos videos. Un abrazo! 🤘🏻
buen video en algunas partes del video no se logra ver completo la linea de codigo por el circulo de la cara. por ejemplo el Putmapping no se ve completo. seria bueno que cuando este terminado el codigo dar un repaso a los archivos para que podamos verificar que tenemos lo mismo
Muchas gracias, en este caso era de mis primeros tutoriales y no tenía en cuenta estas cosas mientras grababa. En vídeos posteriores corrijo ese problema. Espero que no afectara el mucho a tu aprendizaje, un abrazo!
Es de las primeras veces que grababa con ese IDE y no calculé bien. Si te surge alguna duda, no tengas reparo en preguntar por aquí. Estamos para ayudar. Un abrazo.
En principio el tema de las importaciones me las realiza el IDE automáticamente. Igualmente en cuanto pueda hacé un vídeo remasterizado arreglando esos pequeños detalles. Muchas gracias por el aporte Jose Antonio, me ha ayudado mucho para tomar notas y optimizar futuras actualizaciones. Un abrazo!
Muy buenas, sí se crea autonaticamente aunque tienes que dejarlo indicado en la entidad, lo que define que eso es un ID son las anotaciones que lleva encima (Los @) aquí te muestro un ejemplo: @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id;
Para agregar la dependencia de MySQL en el archivo pom.xml de un proyecto Maven, debes seguir los siguientes pasos: Abre el archivo pom.xml en un editor de texto o en tu entorno de desarrollo. Busca la sección dentro del archivo pom.xml. Si no existe, puedes agregarla en la sección . Dentro de la sección , agrega la siguiente dependencia de MySQL: mysql mysql-connector-java 8.0.0 Esta dependencia proporciona las clases y métodos necesarios para interactuar con la base de datos MySQL desde tu proyecto Java.
Hola Disculpa por Molestar me prodrias decir que parte del codigo va en el minuto 41:12 Es que tu camara no deja ver lo que dices despues del with y se que va un + id; pero en la ejecucion del codigo me sale error en la linea, 'else' withou 'if' que es justamente ese min que no se ve el codigo si me puedes decir que decia ahi muchas Gracias y buen video me sirve bastante
Muy buenas, al contrario, no es molestia. Fallo mio. Tiene pinta, según el mensaje que me comentas que es algo con el if, else. Mira a ver las aperturas y cierres de llaves. Algo parecido a esto: if(ok){ } else{ } Cualquier cosa me dices, y con lo que sea, pegame aquí esa parte del código y le hecho un vistazo. Un fuerte abrazo y muchas gracias por tu comentario.
Muy buenas, me imagino que te refieres a la arquitectura mas que a un patron de diseño concreto. La arquitectura es MVC (Modelo Vista Controlador). Un saludo!
Muchas gracias por el reporte, en principio lo acabo de comprobar y es apto en todo el mundo. Prueba a ver ahora a ver si te funciona. A veces TH-cam puede tener problemas técnicos que impliquen errores de este tipo. Un saludo!
Tienes toda la razón, de hecho actualmente en mi día a día siempre utilizo ResponseEntity para mis controladores ya que es más facil a la hora de gestionar los errores. Tomo nota y en cuanto pueda haré una versión mejorada de este vídeo usando ResponseEntity. Un abrazo!
Muy buenas, exactamente el mismo no, tengo uno que en los controladores uso ResponseEntity para gestionar loa errores. Aun así te ayudará, aquí te lo paso: github.com/DanielEspanadero/spring-crud-complete Un saludo 🙂
Muy buenas Martin. Si me puedes compartir el error, te puedo echar una mano. Este proyecto concreto tal cual como lo realicé para este vídeo no lo tengo, pero sí que tengo uno muy parecido. La direfencia es que en este CRUD que te comparto, los controladores están gestionados por ResponseEntity, que me parece mucho mejor que lo que aplico en este vídeo. Este es el enlace al repositorio: github.com/DanielEspanadero/spring-crud-complete/tree/main Cualquier duda que te surja, no tengas reparo en comentarla. Un saludo desde Barcelona.
Hola, no consigo compilar el proyecto, estoy en Eclipse, en la clase CrudApplication.java me señala el error: The declared package "com.api.crud" does not match the expected package "". Investigando por mi cuenta veo que la estructura de directorios del proyecto está bien... no consigo dar con la tecla
El error que estás viendo en Eclipse ocurre cuando la declaración del paquete en tu código Java no coincide con la estructura real de carpetas del proyecto. Esta tendría que ser la ruta: src/main/java/com/api/crud/CrudApplication.java Es raro que fuera por otra cosa, ya que ese error es bastante claro. Un abrazo y espero que hayas podido solucionarlo.
Yo personalmente prefiero hacerlo a parte a través de condicionales, pero tienes un par de anotaciones interesantes para poner encima del campo de la entidad para evitar que este sea nulo o venga en blanco: Para evitar que sea nulo: @NotNull(message = "El campo nombre no puede ser nulo") Para evitar que venga en blanco: @NotBlank(message = "El campo nombre no puede estar en blanco") Espero haberte ayudado. Un fuerte abrazo desde Barcelona (España).
Quisiera saber porque cuando al inicio abro el proyecto en neatbeans me aparece unloadable y ya no me aparece el resto del proyecto:( La versión que utilizo es la 21
Muy buenas, no sabría responderte. Es posible que sean conflictos con la versión de Java o con el empaquetador. Si me proporcionas más detalles, podré ayudarte. ¿Tienes repositorio en github?
Lo tengo en mente. El primer vídeo que haré sobre el tema es con servicios cloud ya que parece que hoy en día la tendencia es hacia ahí. Usaré el servicio EC2 de AWS con un servidor de Ubuntu Linux. Pronto estará en el canal explicaco paso a paso. 🙂
Hola, realice el crud, y al comprobar con postman me devuelve un JSON donde first name y last name son null, pero mail si me guarda la información, no he podido encontrar el error.
A veces, en estos casos, suele ser un tema de escritura. Mira a ver si lo esperas con camel case o todo minúsculas. En mi caso, cuando me suele pasar es por algo relacionado con eso. Mucha suerte, un abrazo!
Para har un simple CRUD haces muchos pasos en Java cosa que en PHP no. Yo programo en Java porque en mi país hay mercado en Java, no porque quizá me quedo con PHP, y de ahí estoy entre Python o Js con notejs
Piensa que Java es uno de los lenguajes más robustos que existen. El tipado estricto evita errores típicos que la gente sí comete con PHP, JavaScript o Python. Ese es el motivo por el que muchas empresas apuestan por el.
Hola amigos! El servidor al arrancar SpringBoot me va bien y sin problema, es decir que estoy conectado correctamente a la BBDD pero al hacer las peticiones (GET, POST) me manda un 404. Sabría alguien por qué? He estado mirando e intentando localizar el problema pero no se por qué, se que sin mirar el código es dificil saberlo pero cualquier ayuda sirve. Por cierto, he revisado el puerto y el nombre de la ruta y todo es correcto, Muchas gracias!! 😁
Muy buenas, un error 404 quiere decir que la ruta a la que estás apuntando no existe. Comprueba el controlador a ver si has definido bien las rutas. Si tienes el código en github pásamelo por aquí y le hecho un vistazo. Un abrazo!
@@danielespanadero Hola Dani maquina! Aqui tienes un subscriptor nuevo!! La verdad que he cometido un error de principiante y es que no puse el puerto en el application.properties y el puerto por defecto de tomcat es el 8080 y yo estaba intentando acceder desde el puerto que tengo seleccionado en MAMP. Gracias por responderme igualmente!!
Muy buen tutorial, pero no me funciona, cuando intento realizar cualquier operación, me dice que no encuentra la ruta, y me manda el error 404, pero reviso, y el link está bien, el programa compila perfectamente dentro del IDE, pero no logro hacer ingrese datos ni nada por el estilo.
Tengo pendiente hacer un vídeo completo de Spring Security, pero como bien dices no es tarea fácil. Te recomiendo tener bien pulido spring boot antes de empezar con spring security. Un saludo y mucho ánimo. Si te surge cualquier duda, no tengas reparo en comentar.
El error "Not a managed type" es comúnmente asociado con el uso incorrecto de JPA. Este error ocurre cuando intentas realizar operaciones de persistencia (como guardar o consultar entidades) en una clase que no está correctamente configurada como una entidad JPA. Asegúrate de que la clase UserModel esté correctamente anotada con @Entity. También, asegúrate de que la clase UserModel esté en el paquete correcto que está siendo escaneado por Spring para encontrar entidades JPA
@danielespanadero a comparación de express si. Porque te permite crear aplicaciones escalables, ya que es un Framework MVC, Al igual que Springboot.. en parte sabía que estaba de cierta forma basado en estos framework, pero no sabía que tanto jajaja.
@@marzdarold En general, cuando algo funciona bien suele ser copiado e incluso mejorado. Eso es una ventaja ya que facilita el salto entre tecnologías ampliando el abanico de posibilidades laborales. 😁
Hola, me sale un error al correr la aplicación, todo va bien hasta que me sale un error, y dice más o menos así: ERROR 13353[ main ] Com.zaaxer.hikari.pool.HikariPool: HikariPool-1 Exception during pool initialization. Y después sale: java.sql.SQLException Createbreakpoint: Access denied for user 'root'@'localhost' (using password: YES) Quiero suponer qué es mi conexión de MySQL pero mi usuario y mi contraseña son correctos, espero puedan ayudarme. ☹️
Hola, este error es bastante común cuando trabajas con MySQL y Spring Boot. De acuerdo con los mensajes de error que estás recibiendo, parece que tu aplicación no puede acceder a la base de datos MySQL con las credenciales proporcionadas. Aquí te dejo algunos pasos que puedes seguir para solucionar este problema: 1. Verifica las credenciales: Asegúrate de que el nombre de usuario (root) y la contraseña son correctos. Prueba acceder a la base de datos MySQL con las mismas credenciales fuera de tu aplicación, por ejemplo, utilizando la línea de comandos o un cliente de base de datos como MySQL Workbench. 2. Verifica la URL de conexión: Revisa la URL de conexión en tu archivo de application.properties de Spring Boot. Debería tener un formato parecido a jdbc:mysql://localhost:3306/nombre_de_tu_base_de_datos.
Muchas gracias por la suscripcion Angel. Aquí te paso un crud completo con Java y Spring que tengo en mi github para que puedas ver los conceptos. No es el mismo ejemplo que realizo en el vídeo, pero la clave es entender los conceptos y eso si que no cambia. github.com/DanielEspanadero/spring-crud-complete
Hay varias maneras, tienes servicios como EC2 de AWS, tambien puedes hacerte con un VPS y configurarlo e incluso hay plataformas que ya te dan todo configurado para que lo subas directamente. Yo personalmente tiraría por aprender cloud. Un abrazo!!
Muy buenas Jose Antonio, eso es por que te has descargado IntelliJ Idea Ultimate, tienes que descargarte la IntelliJ Idea Community Edition que es 100% gratuita. Un saludo!
Muy buenas Lewis, tube un par de errores, que Leonardo corrigió en el comentario fijado, este es 100% funcional: Finalmente el update del service quedo asi: public UserModel updateByID(UserModel request, Long id ){ UserModel userModel = userRepository.findById(id).get(); userModel.setName(request.getName()); userModel.setLastName(request.getLastName()); userModel.setEmail(request.getEmail()); userRepository.save(userModel); return userModel; } Luego el controlador asi: @PutMapping(path = "{id}") public UserModel updateUserById(@RequestBody UserModel request ,@PathVariable Long id){ return this.userService.updateByID(request, id); }. Muchas gracias por ver el vídeo y espero haberte ayudado. Un abrazo! 🤘🏻
Hola amigo gracias por el video, solo mencionar un ajuste para los que hayan tenido el mismo error: con el método Update que es justamente el que no probaste jaja, este medio problemas asique ahí me cranee la cabeza para ver que sucedía ya que estoy aprendiendo, y bueno di con la siguiente solución.
Probando la aplicación me di cuenta que en el método update no cumplía su función ya que en al controlador le faltaba el @PathVariable, luego de este cambio la solicitud me devolvía un 200 pero al listar me daba cuenta que la información no había sido guardada, ósea el objeto no había sido actualizado, asique volví al service y me di cuenta que al final del método faltaba usar el método save del repositorio para que se guardaran estos cambios que se habían realizado.
Finalmente el update del service quedo asi:
public UserModel updateByID(UserModel request, Long id ){
UserModel userModel = userRepository.findById(id).get();
userModel.setName(request.getName());
userModel.setLastName(request.getLastName());
userModel.setEmail(request.getEmail());
userRepository.save(userModel);
return userModel;
}
Luego el controlador asi:
@PutMapping(path = "{id}")
public UserModel updateUserById(@RequestBody UserModel request ,@PathVariable Long id){
return this.userService.updateByID(request, id);
}.
Tras finalizar con estos pequeños cambios el crud por fin funcionaba ok.
De igual forma si el error era otra cosa que aun no veo por mi poca experiencia háganmelo saber :)
Muy buenas Leonardo, muchas gracias por tomarte el tiempo de compartir tu solución y experiencia con el método Update. Me alegra saber que pudiste resolver el problema y que estás aprendiendo en el proceso. Tu aporte es valioso y estoy seguro de que ayudará a otros que puedan enfrentarse a la misma situación, mil disculpas por el error, soy consciente de que a veces me enrrollo mucho hablando y por eso procuro tomar consciencia de no alargar los vídeos más de la cuenta, en este caso al no realizar la comprobación no caí en la cuenta de que no estaba correcto, aun así estoy muy orgulloso de que hayas sido capaz de resolverlo, al fin y al cabo en esto consiste la programación, resolver problemas.
Voy a fijar tu comentario en la sección de comentarios del video para que otros puedan encontrar fácilmente tu aporte y aplicar la solución que proporcionaste en caso de que se encuentren con el mismo error.
De nuevo, gracias por tu contribución y no dudes en seguir compartiendo tus descubrimientos y aprendizajes en futuros videos. ¡Sigamos creciendo y aprendiendo juntos! Un fuerte abrazo!!!! 😊
@@danielespanadero de nada muchas gracias a ti por compartir tus conocimientos !
gracias asmigo, me sirvió tu aporte del update.
Excelente Leonardo gracias
te amo, ya decia yo jajaja gracias colega ;)
Un video muy completo la verdad donde se explica el paso a paso la guía orientativa y para quienes no conocen estas herramientas, muy sencillo de programar aunque un poco extenso, pero nada mal.
Muchas gracias por tis palabras, un fuerte abrazo!
De lo mejor, Los mejores 50 minutos para aprender! muchas gracias y sigue con más videos de spring y esperando la union con angular!
Llegará, de hecho tengo pensado para el año que viene empezar a hacer directos y, entre otras cosas, un proyecto completo con los que os vayais pasando. Allí te espero. (Es posible que antes haga un vídeo de como hacerlo). Un saludo.
Excelente turorial quedo perfecto realmente me funcionaron 3 de los cuatro metodos ya que en el update falto un detalle que no comprendia el porque no se me guardaban los datos al actualizarlos usando el postman, investigue un poco y habria que agregar en el return del update el save de esta manera => return userRepository.save(user); para que se guardaen los datos que se estan actualizando. Aun asi del resto de verdad aprendi muchisimo muchas gracias por este tutorial...
Muchas gracias por tus palabras, Yerinson. Disculpa la tardanza en responder, a veces se me escapa algún comentario de TH-cam y lo veo cuando entro en TH-cam Studio a revisar. Me alegro de que te haya sido de utilidad el vídeo y muchas gracias por la corrección. Un fuerte abrazo!
Hoy tuve una entrevista laboral y hacía rato que no tocaba Spring Boot por proyectos del trabajo, por lo que anoche y esta mañana practiqué con tu video y me fue súper útil para refrescar conceptos 😄
Ahí va la sub, muchas gracias Daniel!
¡Muchas gracias por tu comentario LuRdrigz! No tienes idea de cuánto me alegra leer que el video te ayudó a prepararte para tu entrevista laboral. Ese es precisamente el objetivo, ofrecer una herramienta útil para refrescar conceptos y mantenerse al día con Spring Boot. Estoy realmente agradecido por tu suscripción y apoyo. Si tienes alguna otra área o concepto sobre el que te gustaría que haga un video, no dudes en decírmelo. Un fuerte abrazo! 🤘🏻
Este tuto es uno de los mejores en español, simplemente por que organiza muy bien los paquetes y explicas muy bien los componentes de la aplicación, F E L I C I D A D E S colega y gracias. Me pude hacer un end point funcional con OpenJDK 15, Springboot y MySQL. Saludos desde 🇲🇽
WOW!! Muchas gracias por tu comentario, sube bastante el ánimo y la motivación para seguir creando este tipo de contenido. En principio, lo que muestro aquí es completamente funcional a la hora de usar OpenJDK 15. En este caso he utilizado Java 8 por que es lo que utilizo en mi trabajo, pero he realizado el CRUD exactamente igual usando Java 20 y ha funcionado sin ningún problema. Un fuerte abrazo!
Lo acabo de ver y me gustó bastante la manera de explicarlo, muy buen video, me ayudó a recordar conceptos 👍
Muchas gracias por tus palabras, me alegro de que te haya servido. Un abrazo! 😎🤘🏻
Hola, Gracias por el tutorial, muy claro! 👍 Excelente, no tenía conocimientos previos en Java y todo me funcionó
Muchas gracias por tu comentario. Es un honor haber leido tus palabras y, sobre todo, que el vídeo te haya ayudado. Un fuerte abrazo!
Buen tutorial la verdad, mis dieces, no necesito spring boot para nada, lo estoy aprendiendo por conocimiento y me sirvió mucho
Muchas gracias por tu comentario, Fran. Me alegro de que te haya sido de utilidad, nunca está demás aprender cosas nuevas. Un abrazo!
Tu primer video que veo y me gusto mucho tu manera de enseñar detalle a detalle 😃 sigue asi campeón!!
Muchas gracias, CR. Creo que es importante poner foco en los detalles ya que quien está aprendiendo necesita entender el porqué de las cosas (O así es como me lo tomo yo). Te invito a suscribirte al canal para no perderte nada de lo que vaya subiendo. Un fuerte abrazo! 🙂
Lo pude terminar amigo! Eres un genio, Saludos desde Argentina!
Me alegro mucho de que te haya funcionado!! Es un honor leer que es de ayuda este material. Un fuerte abrazo desde Barcelona, España. 🙂
Muy buen tutorial, lo segui todo y funciona perfecto, muy claro como explicas, gracias por compartir. Un saludo.
Muchas gracias por tus palabras, me animan mucho y me motivan a seguir creando este tipo de contenido. Un fuerte abrazo!
Muchas gracias por el tutorial, esta muy bueno, muy didáctico. saludos.
Muchas gracias a tí por el comentario y me alegro mucho de que te haya servido, un fuerte abrazo!
Muchas gracias por el curso, fue de mucha ayuda, esta muy bien explicado todo
Gracias a tí por comentar, David. No sabes lo util que es todo el feedback que recibo para motivarme a crear nuevos vídeos. Me alegra de que te haya sido de utilidad. Un fuerte abrazo! 🙂
Madre mia Dif, no entiendo nada de lo que dices en el primer minuto!!!!!! Eres grande, sigue así que siempre lograrás lo que te propongas 👍🏻
Muchas gracias por tu comentario Nacho! La verdad es que hace un año decidí hacer un cambio en mi vida a nivel profesional y la verdad es que ha sido un buen cambio. 😁
La programación es tan increíble, gracias por este aporte
De nada, gracias a tí por tu comentario. Un fuerte abrazo! 🙂🤘🏻
Muchas gracias por compartir el contenido. Resulta muy útil como introducción rápida.
Quería hacer un apunte constructivo sobre un par de términos que se usan mucho:
- private: se pronunciaría _praivit_.
- public: se pronunciaría _pablic_.
Somos hispanohablantes y no tenemos por qué saberlo pero no está de más dado que se usa tanto.
Una sugerencia para las clases de los modelos es emplear Lombok para, mediante anotaciones, generar automáticamente los constructores, getters, setters...
De nuevo, buen aporte. Gracias
Muchas gracias por el aporte, me tengo que poner las pilas con el inglés. 😅
El tema de lombok, no he conseguido que vaya en mi pc y tampoco he querido dedicarle mucho tiempo a mirar por qué pasa... Aunque en cuanto pueda me pondré a ello.
De nuevo, gracias por el aporte. Un fuerte abrazo! 🤘🏻
Estaba buscando plata y termnine encontrando ORO, amigo muchas gracias
Muchas gracias a tí por comentar, un abrazo y me alegro de que te haya servido! 🙌🏻🙂
Buen trabajo, muy simple y cumple su propósito didáctico, gracias
Muchas gracias por tus palabras, un abrazo! 😎🙌🏻
Me ayudo muchisimo gracias, tuve errores pero los logre solucionar
Esa es la clave de la programación. Muchas gracias por tus palabras. Un fuerte abrazo! 🙌🏻🙌🏻🙌🏻
Muchas gracias por el tremendo aporte
Muchas gracias por tu comentario. Pues sí que me gustaría hacer algo con Java y Angular. En cuanto saque un rato me pongo a ello. Un abrazo! 😁🤘🏻
Hola amigo, muchas gracias por compartir conocimientos!
Saludos desde Mexico ✌
Muchas gracias por tu comentario, David.
Saludos desde Barcelona, España 🙌
Muy buena explicacion se nota tu compromiso por enseñar..... Solo una Observacion (que no tiene que ver con el tema). Pienso que el circulo donde esta tu imagen deberia estar del lado izquierdo de la pantalla
Muy buenas, Aliskair. Muchas gracias por el comentario y por el consejo. Lo tendré en cuenta en futuras ocasiones. Un abrazo!
que gran video hermano ando aprendiendo a usar springboot y springsecurity jajaj y yo para las clases uso lombok me ahorra muchisimo tiempo haciendo los modelos jaja y es genial
Muchas gracias por tu comentario, Daniel. Pronto subiré un vídeo bastante completo sobre Spring Security, así que suscríbete al canal para no perdertelo. En cuanto saque tiempo lo grabo. Un fuerte abrazo!
Eres un genio, gracias por tus videos aprendo mucho, Saludos!
Muchas gracias por tu comentario, Fabian. Me alegra mucho que aprendas con mis vídeos. Si en cualquier momento te surge alguna duda, no tengas reparo en comentar. Estoy aquí para ayudar. Un fuerte abrazo!
Excelente video , una pequeña recomendación por ahí achicar o correr un poquito tu cámara , por que en muchas veces tapa las lineas de código que vas tirando sobre la derecha y como que tuve que esperar que adelantes el código para poder verlo cuando scrolleabas para arriba , pero muy buen video , gracias !!.
Muchas gracias por tu comentario, en siguientes vídeos lo estoy teniendo en cuenta y voy realizando cambios de cámara para que se pueda ver todo el codigo. Mil disculpas por las molestias ocasionadas en ese sentido y espero seguir viendote en futuros videos. Un abrazo!
Me sirvió mucho, saludos desde Colombia.
Muchas gracias por tu comentario. Un saludo desde España. 🙂
Pufff bro, excelente tutorial! Me sirvió bastante 🎉
Muchas gracias, me alegro de que te haya servido. Si te surge cualquier duda o quieres que haga un vídeo sobre lo que sea, se aceptan sugerencias y, si lo conozco y puedo, lo haré.
Un saludo 🙂🤘🏻
Genial, me ayudó mucho me gustaría otro tuto con El front Como conectarlo con un HTML, css, javascript, gracias por tu trabajo.
Muchas gracias por tu comentario. Pues justamente tengo en el canal cursos de HTML, CSS y JavaScript donde enseño a realizar peticiones HTTP. Aun así me lo apunto para hacer un vídeo específico de eso. Un saludo.
Excelente video, directo a los bifes y claro, ganaste un sub
Muchísimas gracias Juan Manuel!! Un abrazo! 🙌🏻
Gran video, me ayudó muchísimo!
Muchas gracias, me alegro mucho de que te haya ayudado! Un abrazo! 🙌🏻🙌🏻
mi amigo miquel te manda saludos! gran video!
Un grande Miquel! Muchas gracias por tu comentario. Un fuerte abrazo y espero que te haya servido. 🙂
Incluso un absoluto novato en java como yo ha podido entender el 80-90% de lo explicado en el vídeo, así que mis más sinceras felicitaciones. Eso sí, como novato total, ni idea de cómo crear la base de datos (entiendo que con MySQLWorkbench) o qué es y cómo manejar/crear postman para poder testear la API. Si alguien puede señalarme el camino para aprender al respecto se lo agradecería 🙂
Muchas gracias por tu comentario. En cuanto a MySQL, tengo un vídeo que te puede ayudar:
th-cam.com/video/Fh0eAzfvPTI/w-d-xo.html
Espero que sea de tu agrado, un fuerte abrazo! 🙂
Hola @@danielespanaderodas clases puedo pagarte
Quiero ese perrito en la barra de loading :3 jaja, buen video gracies.
Hace tiempo que no lo tengo, pero creo recordar que es de una extensión llamada: Pokemon Progress
Puedes configurar el pokemon que quieres que te aparezca. Un saludo.
Muy buen video. Muchas gracias. Nuevo sub al canal.
Saludos desde Argentina.
Muchas gracias por la suscripción y por el comentario, Juan Agustín. Me alegro de que te hayas sumado a la familia. Un abrazo desde España.
Excelente master, buenos conceptos, falto lo del probar los métodos Put y Delete desde Postman(Para agregar los parametros). Igualmente gracias por el conocimiento. Saludos
Muchas gracias por tus palabras, Camilo. Tendré en cuenta para futuros vídeos probar todo lo que hago. Si necesitas ayuda con cualquier cosa, no tengas reparo en preguntar.
Un abrazo!
Excelente video, de vez en cuando el circulo que te enfoca tapaba el codigo pero muy buen aporte👍.
Es algo que tengo en mente corregir en el futuro, he pensado incluso en no salir yo, pero se que a mucha gente le gusta ese trato mas personal. Lo que acabaré haciendo es ir cambiando el circulo de sitio. Me alegro mucho de que te haya gustado Carlos, cualquier duda no tengas reparo en comentarla por aquí. Un abrazo! 🙌🏻
@@danielespanadero ES MEJOR HACER EL TUTORIAL CON TU VOZ, NO ES NECESARIO MOSTRARTE, ESO SE HACE MAYORMENTE CUANDO HACES UN STREAM DE GAMEPLAYS. 🙂
gracias por compartirnos tu conocimiento :D
Muchas gracias a tí por comentar, Santiago. Un fuerte abrazo!
Cojonudo video, en mi caso en lugar de MySQL he usado una H2 con su debida adaptacion respecto a llamar user al path jajaja, brutal seguire por este canal un buen tiempo
Muchas gracias por tus palabras, no sabes lo que motiva leer este tipo de comentarios. Si tienes alguna sugerencia que crees que pueda ser interesante, no tengas reparo en comentar. Tengo varios vídeos en el tintero que quiero hacer como Spring Security o Java IO. Un fuerte abrazo!
Increiblemente increíble.
❤️❤️❤️❤️❤️❤️
Como te quiero tío, gracias
Gracias a tí por comentar, Juan. Un abrazo! 😎🤘🏻
Brutal en serio que tiepo de arquitectura estas usando no se si escuche mal pero pues no supe, pere Arquitectura de Capas
Muchas gracias por tu comentario. La verdad es que no utilizo arquitectura de capas, en este caso, lo que estoy utilizando es MVC (Modelo Vista Controlador). Es una arquitectura que es bastante sencilla para empezar y que es fácil de comprender. Aunque si te animas, tengo un vídeo sobre Arquitectura Hexagonal que te ayudará a comprender cómo funcionan las arquitecturas por capas:
th-cam.com/video/JD_ZL3Bnaog/w-d-xo.html
Un abrazo!
Excelente video!, muchas gracias
¡Hola Erick! ¡Mil gracias por tu comentario! Me pone súper contento saber que te gustó el video y te fue útil. Si tienes preguntas o sugerencias para futuros videos, no dudes en compartirlas. No olvides suscribirte al canal y activar la campanita para estar al tanto de más contenido genial. ¡Un fuerte abrazo y nos vemos en el próximo video! 😁🎉🚀
muy bueno loco!!
Muchas gracias crack, un abrazo!
Hombre, que buen video
Muchas gracias Alejandro. No sabes lo que me sube el ánimo leer comentarios como el tuyo. Un abrazo!
hola hermano saludos desde venezuela.... gracias por los tutos son muy buenos y una pequeña cosa, la miniatura de tu cara podria ponerla mas pequeña o mas lejos de las lineas de texto hay momentos que tapas lo que escribes
Muchas gracias por tus palabras. Así lo haré en futuros vídeos, mil disculpas. Un abrazo desde Barcelona, España. 🙂🤘🏻
Fantástico! la tabla user la creaste en mysql o el mismo backend se encarga de la creacion de los objetos de base de datos??
Muchas gracias por comentar. Las tablas las crea JPA automáticamente al usar la anotación Entity. Un fuerte abrazo! 🙂🤘🏻
Excelente video que explica todo lo basico, ahora que estoy haciendo un crud pequeño veo que entity ahora es con jakarta en vez de javax ? ya no se utuliza javax ? o como esta el asunto, gracias,
Me alegro que te haya gustado el video.
En respuesta a tu pregunta, sí, en el 2021, Java EE fue renombrado a Jakarta EE. Esto se debe a que Oracle, que era el propietario de Java EE, decidió donarlo a la Fundación Eclipse. La Fundación Eclipse es una organización sin ánimo de lucro que se dedica a promover el desarrollo de software libre y de código abierto.
El cambio de nombre de Java EE a Jakarta EE no ha afectado a la API, que sigue siendo la misma. La única diferencia es que el prefijo de todos los paquetes ha cambiado de javax a jakarta. Por ejemplo, el paquete javax.persistence se ha convertido en jakarta.persistence.
Espero haber solucionado tu duda, un saludo! 🙂🙌
@@danielespanadero waooo , toda una historia, gracias por la aclaración.
De nada, para eso estamos. Un fuerte abrazo! 🙂🙌🏻
Gracias por el contenido bruh!!
Gracias a ti por comentar, Santiago. Un fuerte abrazo! 🙂🙌🏻🙌🏻
Muchas gracias
Muchas gracias a tí por comentar Nicole, un abrazo! 🙌🏻
Buenos dias
En primer lugar felicitarte por este impresionante aporte.
He captado los conceptos a la primera.
Agradecértelo siempre será poco.
He realizado la práctica desde el principio, pero adaptándola a una bbdd remota que poseo en un servidor web que tengo contratado.
He cometido algún error y me gustaría saber si tienes este código en algún repositorio para ver que diferencias y/o errores puedo haber cometido.
Muchas gracias.
Muchas gracias por tus palabras, Jesús. Leer comentarios como el tuyo motivan a seguir creando este tipo de contenido. Exantamente el mismo ejercicio no lo tengo, lo tengo mejorado. En este que te paso, en los controladores utilizo ResponseEntity, que es mucho mejor para gestionar los errores. Espero que te ayude, aquí te dejo el link:
github.com/DanielEspanadero/spring-crud-complete
Un abrazo y muchas gracias de nuevo por tus palabras 🙂🤘🏻
@@danielespanadero muchísimas gracias
excelente video bro, pero podrias enseñar como crear la base de datos manual ?, saludos.
Muchas gracias por tu comentario, Carlos. Justamente tengo un vídeo sobre MySQL donde lo enseño a hacer todo de manera manual, espero que te sirva:
th-cam.com/video/Fh0eAzfvPTI/w-d-xo.html
Un abrazo! 😀🤘🏻
Gracias por el video pero es para avanzados , me faltan comentar algunas cosas aun asi agradecido
Muy buenas Rubén, muchas gracias por tu comentario. Poco a poco, piensa que la programación es una carrera de fondo. Si tienes cualquier duda no tengas reparo en preguntar y estaré encantado de responderte a lo que necesites. Un abrazo!
@@danielespanadero Gracias, es solo que quería hacer un CRUD para empezar portafolio y la verdad es que cada uno lo hace de una manera, el tuyo me llamo la atención pq es muy distinto y seguro que más profesional. Un saludo 🫡
Primero que nada muchas gracias por tan buen contenido! Realmente es súper didáctico el video! Nada más me quede con una pequeña duda. 8:15 Como sería la arquitectura de archivos y carpetas en un proyecto más grande? Se dividirán por entidad en lugar de funcionalidad?
Muchas gracias a tí por comentar! Pues el tema de arquitectura es algo complejo ya que depende de lo que vayas a hacer hay infinidad de opciones, en apps gigantescas se podrían utilizar microservícios, que consiste en separar la aplicación en partes muy pequeñas, conectadas entre sí pero independientes, es decir, que si una de esas partes deja de funcionar, el resto de los microseevicios siguen funcionando. Para apps no tan gigantes tienes otras opciones como la arquitectura hexagonal o DDD (Domain Driven Design) que ayuda dividiendo la app en capas, la capa de dominio, de aplicación y de infraestructura... Haré un vídeo sobre el tema ya que es algo bastante extenso para un comentario. Un saludo y feliz año!!
Hola, Muchas gracias, excelente video… solo me queda una duda
Pude ver que la conexión a tu base de datos es local, pero aun así tus peticiones se demoran en responder (mas de lo que se debiera)
¿Este problema puede ser por java? ¿Tu computador?
Te pregunto por qué justamente he visto algunos proyectos con java spring boot que presentan alguna lentitud (más de lo normal), por ejemplo lo comparo con nodejs y express y esas mismas request se demoran menos de 200 ml
gracias y quedo atento
Muchas gracias por tus palabras. El problema en ese caso era la computadora que estaba utilizando. Un MacBook pro del año 2015 con 8GB de RAM y un procesador intel core i5 de la época. Ya solo en arrancar el servidor tardaba 20 veces más que la laptop que utilizo ahora. Un abrazo!
Cuando se trabaja con Optional es necesario mencionar que para acceder a sus métodos se debe hacer de la siguiente manera user.get().getId()
Muchas gracias por tu aporte Carlos, creo que sería interesante hacer vídeos más cortos explicando este tipo de cosas, los que hago son muy elaborados y no puedo parar a explicar cada detalle para no alargarlo más de la cuenta. Un fuerte abrazo! 🙂🤘🏻
@@danielespanadero Bueno deberías de explicar no es un juego esto.
Hola! gracias por la excelente clase!!! pregunto si te anduvo la acualización (UPDATE) de registros, no me ha funcionado hasta ahora. Saludos!
Muy buenas Fabien, en principio sí que funcionó. Pásame el método que hiciste y te lo corrijo sin problema. Un abrazo! 🙌🏻🙂
creo que no funciona pq no se llega a persistir los datos, agrega esto: "this.iUserRepository.save(user);" seguido de "user.setEmail(request.getEmail());"
@@victoralejandrolirianoluis4387 excelente
amigo, super bueno⚙
Muchas gracias Jhon!! Tu comentario me motiva para seguir creando contenido. Un abrazo!! 🙂🙌🏻
ME SUSCRIBO Y ACTIVO LAS NOTIFICACIONES CON MUCHO GUSTO.
Muchas gracias Edgardo!! 🙌🏻
un crack
Muchas gracias!! 😇
Excelente video. Qué temas usas en Intellij Idea.?
Pues los voy cambiando de tanto en tanto, en la actualidad utilizo uno propio. 🙂
Pensé que usarías spring tool suite, pero igual se entiende el orden de los paquetes
Creo que la versión Community de IntelliJ no cuenta con Spring Tools.
bueno en el update con postman es donde hay problemas en lo demas va todo como la seda
Hola! Lo primero muchas gracias por el video me ha servido mucho. Tengo una duda y es que mi petición http me devuelve 401 unauthorized, estoy usando spring boot security. Tienes idea de como solucionarlo?
Muy buenas, al utilizar Spring Securiry me imagino que tienes las rutas protegidas y te has de autenticar. Aquí te comparto un vídeo que hice bastante completo sobre Spring Security que te puede ayudar:
th-cam.com/video/Qu3soRF168I/w-d-xo.html
Un saludo 🙂🤘🏻
Me sirve 🤑🤑🤙
Me alegro Pepito. Gracias por comentar. Un abrazo! 🤑🤘🏻
Me acabo de suscribir 👍
Me alegra mucho que te hayas suscrito, Ivan. ¡Bienvenido a nuestra comunidad! Agradezco tu apoyo y no dudes en compartir tus pensamientos, preguntas o sugerencias sobre los próximos videos. Un abrazo! 🤘🏻
Buen video!
Muchas gracias Laurato! Un abrazo! 🤘🏻
la anotacion entity puede ser que ahora se importe desde jakarta.persistence y no mas de javax.persistence?
Correcto, en Java 17 javax es jakarta. Tengo que renovar el vídeo en cuanto saque un rato. 😅
buen video en algunas partes del video no se logra ver completo la linea de codigo por el circulo de la cara. por ejemplo el Putmapping no se ve completo. seria bueno que cuando este terminado el codigo dar un repaso a los archivos para que podamos verificar que tenemos lo mismo
Muchas gracias, en este caso era de mis primeros tutoriales y no tenía en cuenta estas cosas mientras grababa. En vídeos posteriores corrijo ese problema. Espero que no afectara el mucho a tu aprendizaje, un abrazo!
Crack!.
Muchas gracias Rodo! 🙌🏻
Amigo un buen tutorial, solo que me costó mucho ver cómo le hacías porque tenías tu rostro omitiendo parte del código :V
Es de las primeras veces que grababa con ese IDE y no calculé bien. Si te surge alguna duda, no tengas reparo en preguntar por aquí. Estamos para ayudar. Un abrazo.
tambien me he dado cuenta que las importaciones las hace jakarta en vez de javax
En principio el tema de las importaciones me las realiza el IDE automáticamente. Igualmente en cuanto pueda hacé un vídeo remasterizado arreglando esos pequeños detalles. Muchas gracias por el aporte Jose Antonio, me ha ayudado mucho para tomar notas y optimizar futuras actualizaciones. Un abrazo!
Hola , el ID en el modelo no te lo crea automático después en la BD???
O si defino atributo nombre y contraseña de una tabla usuario x ejemplo ....
Muy buenas, sí se crea autonaticamente aunque tienes que dejarlo indicado en la entidad, lo que define que eso es un ID son las anotaciones que lleva encima (Los @) aquí te muestro un ejemplo:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
En que momento agrego la dependencia de MySQL en el pom.xml?
Para agregar la dependencia de MySQL en el archivo pom.xml de un proyecto Maven, debes seguir los siguientes pasos:
Abre el archivo pom.xml en un editor de texto o en tu entorno de desarrollo.
Busca la sección dentro del archivo pom.xml. Si no existe, puedes agregarla en la sección .
Dentro de la sección , agrega la siguiente dependencia de MySQL:
mysql
mysql-connector-java
8.0.0
Esta dependencia proporciona las clases y métodos necesarios para interactuar con la base de datos MySQL desde tu proyecto Java.
Hola Disculpa por Molestar me prodrias decir que parte del codigo va en el minuto 41:12 Es que tu camara no deja ver lo que dices despues del with y se que va un + id; pero en la ejecucion del codigo me sale error en la linea, 'else' withou 'if' que es justamente ese min que no se ve el codigo si me puedes decir que decia ahi muchas Gracias y buen video me sirve bastante
Muy buenas, al contrario, no es molestia. Fallo mio. Tiene pinta, según el mensaje que me comentas que es algo con el if, else. Mira a ver las aperturas y cierres de llaves. Algo parecido a esto:
if(ok){
} else{
}
Cualquier cosa me dices, y con lo que sea, pegame aquí esa parte del código y le hecho un vistazo. Un fuerte abrazo y muchas gracias por tu comentario.
Hola con que patron de diseño estas trabajando???
Muy buenas, me imagino que te refieres a la arquitectura mas que a un patron de diseño concreto. La arquitectura es MVC (Modelo Vista Controlador). Un saludo!
Hey no tiene sonido tu video.... Pensé que era mi teléfono pero no es el video.... Espero se solucione ya qué se ve que esta interesante. Saludos!
Muchas gracias por el reporte, en principio lo acabo de comprobar y es apto en todo el mundo. Prueba a ver ahora a ver si te funciona. A veces TH-cam puede tener problemas técnicos que impliquen errores de este tipo. Un saludo!
TIO DIF, HAZ UN TUTORIAL DE SPRING BOOT Y SU CRUD PERO USANDO RESPONSE ENTITY EN LOS METODOS DEL CONTROLADOR.
Tienes toda la razón, de hecho actualmente en mi día a día siempre utilizo ResponseEntity para mis controladores ya que es más facil a la hora de gestionar los errores. Tomo nota y en cuanto pueda haré una versión mejorada de este vídeo usando ResponseEntity. Un abrazo!
tienes el codigo fuente para que lo compartas? no encuentro un error y solo me queda comparar
Muy buenas, exactamente el mismo no, tengo uno que en los controladores uso ResponseEntity para gestionar loa errores. Aun así te ayudará, aquí te lo paso:
github.com/DanielEspanadero/spring-crud-complete
Un saludo 🙂
hola amigo en el metodo update es donde no actualiza los datos por lo demas va todo como la seda
Muchas gracias por tus comentarios Jose Antonio, son de gran ayuda para mejorar la calidad de los vídeos.
querido tendras el projecto completo? me sale un error al copilar y veo que todo esta correcto, saludos desde Argentina
Muy buenas Martin. Si me puedes compartir el error, te puedo echar una mano. Este proyecto concreto tal cual como lo realicé para este vídeo no lo tengo, pero sí que tengo uno muy parecido. La direfencia es que en este CRUD que te comparto, los controladores están gestionados por ResponseEntity, que me parece mucho mejor que lo que aplico en este vídeo.
Este es el enlace al repositorio: github.com/DanielEspanadero/spring-crud-complete/tree/main
Cualquier duda que te surja, no tengas reparo en comentarla. Un saludo desde Barcelona.
@@danielespanadero un millon de gracias querido! un abrazo enorme
@@martinarana9698 De nada, cualquier cosa que necesites no dudes en preguntar. Un abrazo!
Hola, no consigo compilar el proyecto, estoy en Eclipse, en la clase CrudApplication.java me señala el error: The declared package "com.api.crud" does not match the expected package "". Investigando por mi cuenta veo que la estructura de directorios del proyecto está bien... no consigo dar con la tecla
El error que estás viendo en Eclipse ocurre cuando la declaración del paquete en tu código Java no coincide con la estructura real de carpetas del proyecto.
Esta tendría que ser la ruta:
src/main/java/com/api/crud/CrudApplication.java
Es raro que fuera por otra cosa, ya que ese error es bastante claro. Un abrazo y espero que hayas podido solucionarlo.
hno la imagen de la cámara puede estar arriba, para q no tape el contenido.
En futuros vídeos lo hago asçi, no me dí cuenta a la hora de grabar de ese error. Aun así espero que te haya sido de utilidad. Un abrazo!
usas intellij premiun?
Muy buenas, Jean. Pues no, utilizo la versión community que es 100% gratuita.
Un saludo.
Para validar que un atributo NO EXISTE EN EL JSON?
Yo personalmente prefiero hacerlo a parte a través de condicionales, pero tienes un par de anotaciones interesantes para poner encima del campo de la entidad para evitar que este sea nulo o venga en blanco:
Para evitar que sea nulo:
@NotNull(message = "El campo nombre no puede ser nulo")
Para evitar que venga en blanco:
@NotBlank(message = "El campo nombre no puede estar en blanco")
Espero haberte ayudado. Un fuerte abrazo desde Barcelona (España).
Quisiera saber porque cuando al inicio abro el proyecto en neatbeans me aparece unloadable y ya no me aparece el resto del proyecto:(
La versión que utilizo es la 21
Muy buenas, no sabría responderte. Es posible que sean conflictos con la versión de Java o con el empaquetador. Si me proporcionas más detalles, podré ayudarte. ¿Tienes repositorio en github?
Podrias hacer un tutorial de como subir esa misma api a un servidor remoto y conectarla a una base de datos mysql del mismo servidor?
Lo tengo en mente. El primer vídeo que haré sobre el tema es con servicios cloud ya que parece que hoy en día la tendencia es hacia ahí. Usaré el servicio EC2 de AWS con un servidor de Ubuntu Linux. Pronto estará en el canal explicaco paso a paso. 🙂
@@danielespanadero Muchas gracias, voy a estar al pendiente, ya activé la campanita para recibir tus notificaciones.
Hola, realice el crud, y al comprobar con postman me devuelve un JSON donde first name y last name son null, pero mail si me guarda la información, no he podido encontrar el error.
A veces, en estos casos, suele ser un tema de escritura. Mira a ver si lo esperas con camel case o todo minúsculas. En mi caso, cuando me suele pasar es por algo relacionado con eso. Mucha suerte, un abrazo!
Para har un simple CRUD haces muchos pasos en Java cosa que en PHP no. Yo programo en Java porque en mi país hay mercado en Java, no porque quizá me quedo con PHP, y de ahí estoy entre Python o Js con notejs
Piensa que Java es uno de los lenguajes más robustos que existen. El tipado estricto evita errores típicos que la gente sí comete con PHP, JavaScript o Python. Ese es el motivo por el que muchas empresas apuestan por el.
No es malo que prefieras PHP, pero capacitarte en Java o .Net te puede abrir muchas más puertas, especialmente por su demanda
@@educateprogramando
Soy programado en Java y PHP, solo decía que en PHP no hago tantos pasos.
@@danielespanadero
PHP y Python también se pueden tipar y también puedes usar POO.
@@Vizmonting entiendo bro
Hola amigos! El servidor al arrancar SpringBoot me va bien y sin problema, es decir que estoy conectado correctamente a la BBDD pero al hacer las peticiones (GET, POST) me manda un 404. Sabría alguien por qué? He estado mirando e intentando localizar el problema pero no se por qué, se que sin mirar el código es dificil saberlo pero cualquier ayuda sirve. Por cierto, he revisado el puerto y el nombre de la ruta y todo es correcto, Muchas gracias!! 😁
Muy buenas, un error 404 quiere decir que la ruta a la que estás apuntando no existe. Comprueba el controlador a ver si has definido bien las rutas.
Si tienes el código en github pásamelo por aquí y le hecho un vistazo.
Un abrazo!
@@danielespanadero Hola Dani maquina! Aqui tienes un subscriptor nuevo!! La verdad que he cometido un error de principiante y es que no puse el puerto en el application.properties y el puerto por defecto de tomcat es el 8080 y yo estaba intentando acceder desde el puerto que tengo seleccionado en MAMP.
Gracias por responderme igualmente!!
Muy buen tutorial, pero no me funciona, cuando intento realizar cualquier operación, me dice que no encuentra la ruta, y me manda el error 404, pero reviso, y el link está bien, el programa compila perfectamente dentro del IDE, pero no logro hacer ingrese datos ni nada por el estilo.
Te está funcionando bien, pero tienes algo mal definido en la ruta. Habría que mirarlo. Espero que hayas podido solucionarlo. Un abrazo!
Ando aprendiendo a usar spring Boot y spring security pero me di cuenta que creo que es uno de los modulos mas dificiles de springboot 😢
Tengo pendiente hacer un vídeo completo de Spring Security, pero como bien dices no es tarea fácil. Te recomiendo tener bien pulido spring boot antes de empezar con spring security. Un saludo y mucho ánimo. Si te surge cualquier duda, no tengas reparo en comentar.
Me sale este error: Not a managed type: class com.crossborder.backend.models.UserModel
El error "Not a managed type" es comúnmente asociado con el uso incorrecto de JPA. Este error ocurre cuando intentas realizar operaciones de persistencia (como guardar o consultar entidades) en una clase que no está correctamente configurada como una entidad JPA.
Asegúrate de que la clase UserModel esté correctamente anotada con @Entity.
También, asegúrate de que la clase UserModel esté en el paquete correcto que está siendo escaneado por Spring para encontrar entidades JPA
Soy yo o NestJs se vaso en Spring? Porque son casi iguales.
Sí, se podría decir que es una buena copia. Para mí, Nest hace muy interesante el uso de NodeJS. 🙂
@danielespanadero a comparación de express si. Porque te permite crear aplicaciones escalables, ya que es un Framework MVC, Al igual que Springboot.. en parte sabía que estaba de cierta forma basado en estos framework, pero no sabía que tanto jajaja.
@@marzdarold En general, cuando algo funciona bien suele ser copiado e incluso mejorado. Eso es una ventaja ya que facilita el salto entre tecnologías ampliando el abanico de posibilidades laborales. 😁
He visto mucho videos pero nadie absolutamente nadie ha hecho un crud con tablas con llaves foráneas.
Muchas gracias por tu comentario Jonh, tomo nota para crearlo. Un abrazo!! 🙂
Muchas gracias por tu comentario Jonh, tomo nota para crearlo. Un abrazo!! 🙂
Hola, me sale un error al correr la aplicación, todo va bien hasta que me sale un error, y dice más o menos así: ERROR 13353[ main ] Com.zaaxer.hikari.pool.HikariPool: HikariPool-1 Exception during pool initialization.
Y después sale:
java.sql.SQLException Createbreakpoint: Access denied for user 'root'@'localhost' (using password: YES)
Quiero suponer qué es mi conexión de MySQL pero mi usuario y mi contraseña son correctos, espero puedan ayudarme. ☹️
Hola, este error es bastante común cuando trabajas con MySQL y Spring Boot. De acuerdo con los mensajes de error que estás recibiendo, parece que tu aplicación no puede acceder a la base de datos MySQL con las credenciales proporcionadas.
Aquí te dejo algunos pasos que puedes seguir para solucionar este problema:
1. Verifica las credenciales: Asegúrate de que el nombre de usuario (root) y la contraseña son correctos. Prueba acceder a la base de datos MySQL con las mismas credenciales fuera de tu aplicación, por ejemplo, utilizando la línea de comandos o un cliente de base de datos como MySQL Workbench.
2. Verifica la URL de conexión: Revisa la URL de conexión en tu archivo de application.properties de Spring Boot. Debería tener un formato parecido a jdbc:mysql://localhost:3306/nombre_de_tu_base_de_datos.
@DIF pude solucionarlo, gracias.
HOla, me suscribo con tu foto no se ve vien el codigo, le tapas una parte
Muchas gracias por la suscripcion Angel. Aquí te paso un crud completo con Java y Spring que tengo en mi github para que puedas ver los conceptos. No es el mismo ejemplo que realizo en el vídeo, pero la clave es entender los conceptos y eso si que no cambia.
github.com/DanielEspanadero/spring-crud-complete
Cómo subiríamos la Api a un servidor real?
Hay varias maneras, tienes servicios como EC2 de AWS, tambien puedes hacerte con un VPS y configurarlo e incluso hay plataformas que ya te dan todo configurado para que lo subas directamente. Yo personalmente tiraría por aprender cloud. Un abrazo!!
@@danielespanadero Qué opinas sobre supabase?
@@danielespanadero Algún vídeo sobre ello?
te pide la licencia el intelliJ Idea no te puedo seguir con ese ide no se si con visual studio code a ver
Muy buenas Jose Antonio, eso es por que te has descargado IntelliJ Idea Ultimate, tienes que descargarte la IntelliJ Idea Community Edition que es 100% gratuita. Un saludo!
o me funciono el update
Muy buenas Lewis, tube un par de errores, que Leonardo corrigió en el comentario fijado, este es 100% funcional:
Finalmente el update del service quedo asi:
public UserModel updateByID(UserModel request, Long id ){
UserModel userModel = userRepository.findById(id).get();
userModel.setName(request.getName());
userModel.setLastName(request.getLastName());
userModel.setEmail(request.getEmail());
userRepository.save(userModel);
return userModel;
}
Luego el controlador asi:
@PutMapping(path = "{id}")
public UserModel updateUserById(@RequestBody UserModel request ,@PathVariable Long id){
return this.userService.updateByID(request, id);
}.
Muchas gracias por ver el vídeo y espero haberte ayudado. Un abrazo! 🤘🏻