Query Methods en Spring para Consultas Personalizadas
Clase 11 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
Viendo ahora - 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
11:50 min - 21

Propiedades ACID y Spring Data: Uso de @Transactional
10:07 min
Características avanzadas
Próximos pasos
Los Query Methods en consultas de bases de datos son una herramienta versátil y potente para los desarrolladores que buscan personalizar y optimizar sus consultas SQL. A través de nombres descriptivos de métodos, los Query Methods permiten especificar las condiciones de búsqueda, asegurando así mayor flexibilidad y eficiencia al interactuar con la información. En este artículo, exploraremos cómo utilizar los Query Methods en contextos prácticos, como sería el caso de una "pixería", y aprenderemos a construir consultas dinámicas con ejemplos concretos. Si alguna vez te has sentido limitado por las consultas predefinidas de tu ORM, los Query Methods podrían ser justo lo que necesitas para llevar tus habilidades de desarrollo al siguiente nivel.
¿Qué son los Query Methods?
Los Query Methods son métodos de consulta personalizados que se definen en los repositorios de una aplicación. Estos métodos permiten realizar consultas complejas usando simplemente el nombre del método, que es interpretado y transformado en una consulta SQL en tiempo de ejecución.
¿Cómo se utiliza un Query Method?
Para ilustrar cómo se utiliza un Query Method, podemos tomar el ejemplo de una "pixería" (simulación de pizzería) que desea recuperar todas las "pixas" disponibles, es decir, aquellas que tienen un atributo Available con valor true. En SQL, la consulta sería:
SELECT * FROM Pixa WHERE Available = 1 ORDER BY Price;
En cambio, usando Query Methods, la consulta en el repositorio sería:
List<PixaEntity> findAllByAvailableTrueOrderByPrice();
Aquí, simplemente le decimos que encuentre todas las entidades donde Available es True y luego ordene los resultados por Price.
Creando nuestro primer Query Method
En la práctica, para crear un Query Method en nuestra "pixería", seguiríamos los siguientes pasos:
- Definir el Query Method en el repositorio
PIXARepository. - Retornar una lista de
PixaEntitycon el método con un nombre descriptivo, comofindAllByAvailableTrueOrderByPrice. - No se recibiría ningún parámetro ya que sólo queremos las pixas disponibles y ordenadas por precio.
Ejemplo en el código
public interface PIXARepository extends JpaRepository<PixaEntity, Long> { List<PixaEntity> findAllByAvailableTrueOrderByPrice(); }
Y en el servicio PixaService, definiríamos un método para invocar este Query Method:
@Service public class PixaService { // Omitimos otras partes del servicio para concentrarnos en el método relevante public List<PixaEntity> getAvailablePixas() { return pixaRepository.findAllByAvailableTrueOrderByPrice(); } }
Luego, desde el controlador PixaController, se expone un endpoint que utiliza este servicio para retornar las pixas disponibles a los clientes:
@RestController public class PixaController { // Otras definiciones de métodos del controlador @GetMapping("/availablePixas") public List<PixaEntity> getAvailablePixas() { return pixaService.getAvailablePixas(); } }
¿Qué pasa si queremos más condiciones?
Si desearas buscar una piza por nombre, además de que esté disponible, podrías agregar condiciones adicionales al Query Method. Utilizando AND (y OR si se necesita), se puede construir una consulta que filtre por múltiples criterios. Incluso se puede utilizar IgnoreCase para que la búsqueda por nombre no distinga entre mayúsculas y minúsculas.
Ejemplo en el código para buscar por nombre
public interface PIXARepository extends JpaRepository<PixaEntity, Long> { PixaEntity findAllByAvailableTrueAndNameIgnoreCase(String name); }
En este caso, la implementación sería similar, creando un método en el servicio y exponiendo un endpoint en el controlador que acepte un nombre como variable de ruta.
En resumen
Los Query Methods son una forma increíblemente útil de interactuar con la base de datos, permitiendo a los desarrolladores escribir consultas personalizadas sin necesidad de SQL crudo. Siempre es valioso continuar aprendiendo y experimentando con nuevas herramientas que pueden hacer nuestras aplicaciones más eficientes y nuestro código más limpio. ¡Aventurate a probar los Query Methods y a descubrir todo lo que pueden ofrecer en tus proyectos!