- 1

¿Qué es Spring y por qué es tan popular?
01:49 - 2

Configuración inicial de proyecto Spring Boot con Java 21
07:00 - 3

Crear un endpoint REST con Spring Boot e integrarlo con IA usando LangChain4j
07:29 - 4

Configuración de application.properties y perfiles en Spring Boot
12:23 - 5

Arquitectura por capas orientada al dominio en Java
04:35 quiz de Introducción a Spring Boot
Creación de endpoint PUT para actualizar películas en base de datos
Clase 17 de 23 • Curso de Java Spring Boot
Contenido del curso
- 6

Conexión de Spring Boot con PostgreSQL usando Docker
10:36 - 7

Crear entidad con anotaciones JPA para tabla de base de datos
09:30 - 8

Repositorios CRUD con Spring Data sin escribir SQL
07:43 - 9

Creación de endpoints GET en Spring Boot para consultar películas
04:29 quiz de Persistencia con Spring Data y modelado de datos
- 10

Inyección de dependencias y contenedor IoC en Spring Boot
04:23 - 11

Separación de dominio y persistencia con DTOs en Java
08:55 - 12

Configuración de MapStruct con Spring para convertir entidades a DTO
09:26 - 13

Creación de conversores personalizados en MapStruct para enums y strings
10:01 - 14

Captura de parámetros con @PathVariable en Spring Boot
07:21 - 15

Códigos HTTP y Response Entity en APIs REST
06:52 quiz de Buenas prácticas en diseño de APIs
- 16

Crear endpoint POST para guardar películas en Spring Boot
10:20 - 17

Creación de endpoint PUT para actualizar películas en base de datos
11:50 - 18

Sistema de recomendaciones de películas con IA en Java
11:11 - 19

Control de excepciones con @RestControllerAdvice en Spring Boot
09:38 - 20

Validación automática de datos en APIs con Spring Boot
12:34 - 21

Documentación automática de APIs con OpenAPI en Spring Boot
10:52 - 22

Compilación de aplicación Java para producción con PostgreSQL
10:21 - 23

Despliegue de API Java con Docker en Render
10:20
Actualizar información en una base de datos es esencial para gestionar aplicaciones modernas de manera segura. En este resumen aprenderás cómo implementar de forma controlada y eficiente un endpoint PUT para modificar solo campos permitidos de una película, usando buenas prácticas y herramientas propias del desarrollo backend.
¿Cómo controlar qué campos pueden modificarse con un endpoint PUT?
Permitir la edición parcial evita errores y mantiene la integridad de los datos. Se recomienda crear un UpdateMovieDTO exclusivo para las actualizaciones, que incluya únicamente los campos editables como título, fecha de lanzamiento y calificación (rating).
- El ID y otros valores sensibles como género o duración quedan excluidos del UpdateMovieDTO.
- Usar DTOs separados promueve la seguridad y claridad en la lógica de actualización.
- Copiar la estructura de MovieDTO y modificar los campos según lo necesario facilita la implementación.
¿Cómo diseñar el controlador para recibir las actualizaciones?
La anotación @PutMapping se utiliza para recibir el ID de la película como parte de la URL, y el cuerpo del request incluye el UpdateMovieDTO.
- El ID se captura con la anotación @PathVariable.
- El método controlador recibe ambos valores para identificar correctamente el registro y su información a modificar.
- Esta separación asegura que la actualización se realice sobre la entidad correcta y con datos controlados.
¿Cómo validar la existencia y actualizar los datos en la base de datos?
Es fundamental comprobar que el registro existe antes de intentar cualquier cambio.
- Utiliza el repositorio para buscar la entidad por ID con findById.
- Si no existe, retorna null: así evitas intentos de modificar datos inexistentes.
- Si existe, solo se asignan los nuevos valores permitidos con los métodos set correspondientes (título, release date y rating).
- Se recomienda realizar conversiones de tipos, por ejemplo, de double a BigDecimal usando BigDecimal.valueOf si es necesario.
¿Cómo automatizar la asignación de valores con Mapstruct y MappingTarget?
Para simplificar y hacer más seguro el mapeo entre el DTO y la entidad, Mapstruct permite crear un método especial:
- Define un método en el MovieMapper llamado updateEntityFromDTO que recibe el UpdateMovieDTO y la entidad a modificar.
- Agrega la anotación @MappingTarget al segundo parámetro para aplicar los cambios por referencia.
- Usa la notación @Mapping para señalar qué campos mapea cada vez (target y source).
- Este método no retorna valor (void), ya que modifica directamente la instancia recibida.
¿Cómo integrar el flujo en el servicio y controlador?
El método update en el servicio centraliza la lógica:
- Recibe el ID y UpdateMovieDTO.
- Llama al repositorio para validar la existencia y actualizar solo los campos permitidos.
- El controlador responde con ResponseEntity.ok llamando al servicio de actualización.
- Las pruebas se pueden realizar con Postman enviando una petición PUT a la URL correspondiente, verificando la actualización correcta solo de los campos seleccionados.
¿Qué retos adicionales pueden implementarse para gestionar recursos?
Como ejercicio recomendable, se propone crear un servicio que permita eliminar películas utilizando la anotación @DeleteMapping y el ID del recurso. Esto completa el ciclo de gestión CRUD y fortalece la API.
Si tienes una solución diferente o quieres compartir resultados, la sección de comentarios está abierta para tus aportaciones y preguntas.