La persistencia Lenguaje de consulta Yakarta ( JPQL , anteriormente Java Persistence Query Language) es una plataforma independiente orientada a objetos lenguaje de consulta definido como parte del Jakarta Persistencia (JPA, anteriormente Java Persistence API) especificación.
SO | Multiplataforma |
---|---|
Sitio web | eclipse-ee4j |
Influenciado por | |
SQL , hibernación |
JPQL se utiliza para realizar consultas contra entidades almacenadas en una base de datos relacional. Está muy inspirado en SQL , y sus consultas se asemejan a las consultas SQL en sintaxis, pero operan contra objetos de entidad JPA en lugar de directamente con tablas de base de datos.
Además de los objetos recuperar ( SELECT
consultas), soportes JPQL establece con base UPDATE
y DELETE
consultas.
Ejemplos de
Ejemplos de clases JPA, captadores y definidores omitidos por simplicidad.
@Entity public class Author { @Id private Integer id ; Private String firstName ; private String lastName ; @ManyToMany privada Lista < Book > libros ; } @Entity public class Book { @Id private Integer id ; título de cadena privada ; cadena privada isbn ; @ManyToOne editor editor privado ; @ManyToMany Lista de autores privados < Autor > ; } @Entity public class Publisher { @Id private Integer id ; nombre de cadena privada ; dirección de cadena privada ; @OneToMany ( mappedBy = "editor" ) privada Lista < libro > libros ; }
Entonces, una consulta simple para recuperar la lista de todos los autores, ordenados alfabéticamente, sería:
SELECCIONE un DE Autor a PEDIDO POR a . nombre , a . apellido
Para recuperar la lista de autores que alguna vez ha sido publicada por XYZ Press:
SELECT DISTINCT a FROM Author a INNER JOIN a . libros b DONDE b . editor . name = 'Prensa XYZ'
JPQL admite parámetros con nombre, que comienzan con dos puntos ( :
). Podríamos escribir una función que devuelva una lista de autores con el apellido dado de la siguiente manera:
import javax.persistence.EntityManager ; import javax.persistence.TypedQuery ;...public List < Autor > getAuthorsByLastName ( String lastName ) { String queryString = "SELECT a FROM Author a" + "DONDE a.lastName ES NULL O LOWER (a.lastName) = LOWER (: lastName)" ; TypedQuery < Autor > query = getEntityManager (). CreateQuery ( queryString , Autor . clase ); consulta . setParameter ( "apellido" , apellido ); devolver la consulta . getResultList (); }
Lenguaje de consulta de Hibernate
JPQL se basa en Hibernate Query Language (HQL), un lenguaje de consulta no estándar anterior incluido en la biblioteca de mapeo relacional de objetos de Hibernate .
Hibernate y HQL se crearon antes de la especificación JPA. A partir de Hibernate 3, JPQL es un subconjunto de HQL.