Filtrado de Pizzas por Ingredientes usando Query Methods
Clase 12 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
Viendo ahora - 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
11:50 min - 21

Propiedades ACID y Spring Data: Uso de @Transactional
10:07 min
Características avanzadas
Próximos pasos
¿Cómo utilizar los keywords contains y not en query methods?
La búsqueda de datos precisa y la manipulación efectiva son habilidades esenciales para cualquier desarrollo de software. En este caso, aprenderemos a usar los keywords contains y not para construir query methods que nos permiten extraer información específica de nuestros datos. Analizaremos cómo aplicarlos en una base de datos de pizzas identificando ingredientes específicos y controlando sensibilidades de mayúsculas y minúsculas en las consultas.
¿Cómo recuperar pizzas disponibles con ciertos ingredientes?
Para recuperar pizzas que están disponibles y contienen ciertos ingredientes, podemos utilizar el método finalByAvailableTrueAndDescriptionContainingIgnoreCase. Aquí los detalles:
- Método del servicio: Se define un método público que retorna una lista de entidades de Pizza y recibe como parámetro un ingrediente.
- Implementación: Se invoca el método del repositorio
finalByAvailableTrueAndDescriptionContainingIgnoreCase, pasándole el ingrediente. Este método ignora la diferencia entre mayúsculas y minúsculas gracias aignoreCase. - Consulta API: Exponer esta funcionalidad a través de un endpoint en el API REST, permitiendo obtener pizzas por ingrediente solicitando vía HTTP.
public List<PizzaEntity> getWith(String ingredient) {
return this.pizzaRepository.finalByAvailableTrueAndDescriptionContainingIgnoreCase(ingredient);
}
¿Cómo obtener pizzas que no contienen un ingrediente específico?
Si necesitamos exactamente el resultado opuesto, pizzas que no contengan un ingrediente en particular, podemos modificar ligeramente el query method utilizando not.
- Ajustar Query Method: Inserta
notdespués dedescriptiony antes decontainingpara indicar que buscamos pizzas que no tienen el ingrediente proporcionado. - Consulta API: Similar al anterior, se expone esta funcionalidad a través de otro endpoint.
public List<PizzaEntity> getWithout(String ingredient) {
return this.pizzaRepository.finalByAvailableTrueAndDescriptionNotContainingIgnoreCase(ingredient);
}
¿Cómo traducir query methods a SQL?
Los query methods se traducen de manera automática al dialecto específico de SQL de la base de datos que estés utilizando. Por ejemplo, para obtener pizzas disponibles cuya descripción no contiene un ingrediente, el query traducido sería:
SELECT * FROM pizza WHERE available = 1 AND UPPER(description) NOT LIKE UPPER(?)
En este caso, el ignoreCase se refleja en el uso de UPPER para ignorar mayúsculas y minúsculas en la búsqueda.
Recomendaciones prácticas para implementar query methods
- Uso de
ignoreCase: Siempre que sea posible, utiliza parámetros comoignoreCasepara hacer tus consultas más flexibles y evitar problemas por diferencias de capitalización. - Nombres convencionales: Adopta convenciones de nombres como
finalBypara mejorar la legibilidad y mantenibilidad del código. - Probar resultados: Usa herramientas como Postman para testear tus endpoints y verificar la funcionalidad en diferentes escenarios y bases de datos.
Con estas prácticas y ejemplos podrás manipular y consultar datos de manera más precisa y eficiente, abriendo el camino para desarrollos más robustos y adaptables. ¡Continúa explorando y ampliando tus conocimientos sobre bases de datos y query methods!