Lenguaje de consulta de persistencia de Java

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 11 de abril de 2015; las comprobaciones requieren 3 ediciones .
Lenguaje de consulta de persistencia de Java
clase de idioma lenguaje de consulta
Apareció en 2009
sido influenciado sql
Sitio web eclipse-ee4j.github.io/… ​(  Inglés)
eclipse-ee4j.github.io/…

El lenguaje de consulta de persistencia de Java ( JPQL ) es un lenguaje de consulta orientado a objetos independiente de la plataforma que forma parte de la especificación de la API de persistencia de Java (JPA).

JPQL se usa para escribir consultas contra entidades almacenadas en una base de datos relacional. JPQL es similar a SQL en muchos aspectos , pero a diferencia de este último, opera en consultas realizadas contra entidades JPA, en lugar de consultas directas contra tablas de bases de datos.

Además de obtener objetos ( SELECT-consultas), JPQL admite consultas basadas en los operadores UPDATEy DELETE.

Ejemplos

Supongamos que tenemos entidades JPA definidas de la siguiente manera (los métodos setter y getter de propiedades se han omitido por simplicidad):

@Entity public class Author { @Id private Integer id ; cadena privada nombre ; cadena privada apellido ; @ManyToMany lista privada < Libro > libros ; } @Entity public class Book { @Id private Integer id ; título de cadena privada ; cadena privada isbn ; @ManyToOne editor privado editor ; @ManyToMany lista privada < Autor > autores ; } @Entity public class Publisher { @Id private Integer id ; nombre de cadena privado ; _ dirección de cadena privada ; @OneToMany ( mappedBy = "editor" ) lista privada < Libro > libros ; }

La siguiente consulta devuelve una lista de autores en orden alfabético:

SELECCIONE a DE Autor a PEDIR POR a . primerNombre , un . apellido

Solicitud de una lista de autores publicados por XYZ Press:

SELECT DISTINCT a FROM Author a INNER JOIN a . libros b DONDE b . editor _ nombre = 'Prensa XYZ'

JPQL admite parámetros con nombre que comienzan con dos puntos (:). Una función que devuelve una lista de autores con un apellido dado se verá así:

importar javax.persistencia.EntityManager ; importar javax.persistencia.Consulta ; ... @SuppressWarnings ( "desmarcado" ) public List < Autor > getAuthorsByLastName ( String lastName ) { String queryString = "SELECT a FROM Author a " + "WHERE LOWER(a.lastName) = :lastName" ; Consulta consulta = getEntityManager (). createQuery ( cadena de consulta ); consulta _ setParameter ( "apellido" , apellido.toLowerCase ( ) ); consulta de retorno . obtenerListaResultados (); }

Lenguaje de consulta de Hibernate

JPQL se basa en Hibernate Query Language (HQL), un lenguaje de consulta anterior no estandarizado incluido en la biblioteca de mapeo relacional de objetos de Hibernate .

Hibernate y HQL se crearon antes de la llegada de la especificación JPA. JPQL es un subconjunto del lenguaje de consulta HQL.

Véase también

Enlaces