Consultas de Base de Datos con JPQL en Spring Boot
Clase 17 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
Viendo ahora - 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
¿Qué es JPQL y cómo utilizarlo?
JPQL, o Java Persistent Query Language, es un lenguaje que se utiliza para realizar consultas sobre una base de datos desde las Entities en vez de las tablas tradicionales. Esto permite trabajar de manera más intuitiva para los desarrolladores en Java, ya que se utilizan atributos de objetos en lugar de columnas y tablas.
¿Cómo crear un CustomerRepository?
Para manejar la información de los clientes almacenada en la base de datos, primero necesitamos crear un repositorio. Vamos a seguir estos pasos:
- Crear un
CustomerRepositoryque extiende deListCloudRepository. - Utilizar la
CustomerEntitypara definir el tipo de la clave primaria, que en este caso es unString. - Implementar un método para realizar consultas usando JPQL.
public interface CustomerRepository extends ListCloudRepository<CustomerEntity, String> {
@Query("SELECT c FROM CustomerEntity c WHERE c.fundNumber = :fund")
CustomerEntity findByFund(@Param("fund") String fund);
}
¿Cómo configurar el servicio de clientes?
Una vez definido el repository, es fundamental crear un servicio que lo integre y lo use para gestionar la lógica de negocio relacionada con la consulta de clientes:
- Inyectar
CustomerRepositoryenCustomerService. - Habilitar la inyección de dependencias con la anotación
@Service. - Implementar el método
findByFundque va a recibir unteléfonoy utilizar el repository para la consulta.
@Service
public class CustomerService {
@Autowired
private CustomerRepository customerRepository;
public CustomerEntity findByFund(String phone) {
return customerRepository.findByFund(phone);
}
}
¿Cómo construir el controlador de clientes?
El siguiente paso es crear un controlador que exponga endpoints HTTP para manejar las solicitudes relativas a los clientes:
- Anotar el controlador con
@RestControllery@RequestMapping("/api/customers"). - Inyectar el
CustomerServiceen el controlador usando@Autowired(aunque no es obligatorio). - Implementar el método
getByFundque atenderá las peticiones GET y devolverá la información de un cliente en base a su número de teléfono.
@RestController
@RequestMapping("/api/customers")
public class CustomerController {
@Autowired
private CustomerService customerService;
@GetMapping("/fund/{phone}")
public ResponseEntity<CustomerEntity> getByFund(@PathVariable String phone) {
return ResponseEntity.ok(customerService.findByFund(phone));
}
}
Ejecución y verificación de la aplicación
Ya listo el controlador, es el momento de poner la aplicación en ejecución y probar el endpoint creado. Al realizar una solicitud GET a /api/customers/fund/{phone}, se espera recibir toda la información del cliente asociado al número de teléfono proporcionado. Si todo se ha hecho de manera correcta, la API responderá con estado 200 y los detalles del usuario.
JPQL muestra su fortaleza en su facilidad de uso al trabajar con OOP y su similitud en sintaxis con SQL estándar. Sin embargo, es importante considerar que SQL nativo ofrece características avanzadas no disponibles en JPQL, lo que podría ser un aspecto a explorar en clases futuras para ampliar nuestras habilidades de consulta. ¡Sigue explorando y potenciando tus habilidades en desarrollo con Java y consulta de bases de datos!