Actualización de Precios de Pizza con Spring Data JPA
Clase 20 de 25 • Curso de Java Spring Data JPA: Bases de Datos
Contenido del curso
Primeros pasos
Spring Data Repositories
- 7

Uso de Spring Data Repositories para Gestión de Datos
08:39 min - 8

Guardar y Actualizar Registros con Spring Data Repositories
08:34 min - 9

Eliminar elementos con Spring Data JPA: método deleteById
05:36 min - 10

Gestión de Relaciones en JPA: Lazy vs Eager Fetching
15:09 min - 11

Query Methods en Spring para Consultas Personalizadas
08:28 min - 12

Filtrado de Pizzas por Ingredientes usando Query Methods
07:27 min - 13

Consultas Avanzadas con Query Methods en Java Spring
11:25 min - 14

Uso de Query Methods para Filtrar y Ordenar Datos en Spring
09:30 min - 15

Paginación y Ordenación con Spring Data Repositories
07:39 min - 16

Ordenamiento Dinámico con Paging and Sorting Repository
07:58 min
Personalización de queries
- 17

Consultas de Base de Datos con JPQL en Spring Boot
08:01 min - 18

Consultas SQL nativas y ordenación con Hibernate en Spring Data
08:26 min - 19

Uso de Proyecciones en Queries Personalizados con Java y SQL
13:47 min - 20

Actualización de Precios de Pizza con Spring Data JPA
Viendo ahora - 21

Propiedades ACID y Spring Data: Uso de @Transactional
10:07 min
Características avanzadas
Próximos pasos
¿Cómo modificar datos en una base de datos usando anotaciones?
¡Bienvenidos al fascinante mundo de las bases de datos en Java! Hoy aprenderás cómo llevar a cabo operaciones como insertar, eliminar o actualizar registros en bases de datos usando anotaciones. Una de las aplicaciones prácticas que exploraremos es actualizar el precio de una pizza. Este proceso se realizará utilizando un Data Transfer Object (DTO) para encapsular el ID de la pizza y su nuevo precio. Aprenderás a aprovechar el poder de Spring Expression Language (SPEL) y a utilizar anotaciones clave como @Query y @Modifying.
¿Qué es un Data Transfer Object (DTO)?
Un DTO es una clase sencilla cuyo objetivo es transferir datos entre procesos. En nuestro caso, crearemos una clase llamada UpdatePizzaPriceDTO que almacenará:
- El ID de la pizza (
int pizzaId) - El nuevo precio (
double newPrice)
Esta estructura permite manipular datos de manera eficiente mientras se minimiza el acoplamiento entre diferentes partes de un sistema.
¿Cómo actualizamos el precio de una pizza?
Una vez creado el DTO en el paquete service.dto, el siguiente paso es definir un método en el repositorio de pizzas que haga la actualización utilizando un SQL nativo:
@Modifying
@Query(value = "UPDATE pizza SET price = :#{#dto.newPrice} WHERE id_pizza = :#{#dto.pizzaId}", nativeQuery = true)
void updatePrice(@Param("dto") UpdatePizzaPriceDTO dto);
¿Qué es el Spring Expression Language (SPEL)?
SPEL es un poderoso lenguaje que permite acceder a propiedades de objetos complejos de manera sencilla dentro de consultas @Query. Esto significa que puedes usar un único parámetro, en este caso, el DTO, y acceder a sus propiedades internas mediante expresiones.
¿Cómo integrar este proceso en el servicio y el controlador?
Dentro del servicio PizzaService, se define un método updatePrice que acepta un UpdatePizzaPriceDTO:
@Transactional
public void updatePrice(UpdatePizzaPriceDTO dto) {
pizzaRepository.updatePrice(dto);
}
Es crucial resaltar la anotación @Transactional, que garantiza que todas las operaciones se realicen dentro de una transacción.
En el controlador se creará un método para manejar peticiones PUT que actualicen el precio de la pizza:
@PutMapping("/price")
public ResponseEntity<?> updatePrice(@RequestBody UpdatePizzaPriceDTO dto) {
if (pizzaExists(dto.getPizzaId())) {
pizzaService.updatePrice(dto);
return ResponseEntity.ok().build();
}
return ResponseEntity.badRequest().build();
}
Este método verifica primero la existencia de la pizza antes de proceder a actualizar su precio. Así se asegura que solo intentemos modificar registros válidos.
¿Cómo resolver el error 500 al ejecutar consultas que modifican datos?
Al ejecutar aplicaciones que modifican datos en la base de datos, puedes encontrarte con el error 500 si no has configurado correctamente las anotaciones. Este error generalmente ocurre si no se usan las anotaciones @Modifying en conjunto con @Query para operaciones de actualización.
Finalmente, iniciar tu aplicación con estas configuraciones debería permitirte realizar actualizaciones exitosas, garantizando que los cambios en la base de datos se efectúen correctamente.
En resumen, estas técnicas avanzadas de modificación de datos utilizando anotaciones en Spring te permitirán mantener un código limpio y eficaz, al tiempo que fomentan la robustez y flexibilidad en aplicaciones empresariales. ¡Continúa explorando y aplicando estos conocimientos!