Ir al contenido
Menú principal
Menú principal
mover a la barra lateral
ocultar
Navegación
Página principal
Cambios recientes
Página aleatoria
Ayuda sobre MediaWiki
Buscar
Buscar
español
Apariencia
Crear una cuenta
Acceder
Herramientas personales
No has accedido
Discusión
Contribuciones
Crear una cuenta
Acceder
Edición de «
Java Persistence Query Language
»
Página
Discusión
español
Leer
Editar
Editar código
Ver historial
Herramientas
Herramientas
mover a la barra lateral
ocultar
Acciones
Leer
Editar
Editar código
Ver historial
General
Lo que enlaza aquí
Cambios relacionados
Información de la página
Apariencia
mover a la barra lateral
ocultar
Advertencia:
no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si
inicias sesión
o
creas una cuenta
, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.
Comprobación antispam. ¡
No
rellenes esto!
{{Ficha de lenguaje de programación |nombre = Java Persistence Query Language |logo = |tamaño_logo = |captura = |tamaño_captura = |pie = |extensiones_comunes = |paradigma = |año = |diseñador = |desarrollador = |última_versión = |fecha_última_versión = |última_versión_beta = |fecha_última_versión_beta = |tipo_dato = |implementaciones = |dialectos = |influido_por = [[SQL]] |ha_influido = |sistema_operativo = [[Multiplataforma]] |licencia = |web = }} '''Java Persistence Query Language''' ('''JPQL''') es un [[lenguaje de consulta]] [[orientado a objetos]] independiente de la plataforma definido como parte de la especificación [[Java Persistence API]] (JPA). JPQL es un lenguaje de consultas que se basa en comandos SQL pero con una variación ya que se usa la caché de la persistencia usado para hacer consultas contra las entidades almacenadas en una [[base de datos relacional]]. Está inspirado en gran medida por [[SQL]], y sus consultas se asemejan a las consultas SQL en la [[sintaxis]], pero opera con objetos entidad y también notar que hemos hecho trampa si intentamos copiar esta parte de aquí mismo de JPA en lugar de hacerlo directamente con las tablas de la base de datos. Además de recuperar objetos (consultas <code>SELECT</code>), JPQL soporta consultas de actualización (<code>UPDATE</code>) y borrado (<code>DELETE</code>) . == Ejemplos == Ejemplo de clases JPA, los getters y setters han sido omitidos por simplicidad. <syntaxhighlight lang="java"> @Entity public class Autor { @Id private Integer id; private String nombre; private String apellidos; @ManyToMany private List<Libro> libros; } @Entity public class Libro { @Id private Integer id; private String titulo; private String isbn; @ManyToOne private Editorial editorial; @ManyToMany private List<Autor> autores; } @Entity public class Editorial { @Id private Integer id; private String nombre; private String direccion; @OneToMany(mappedBy = "editorial") private List<Libro> libros; } </syntaxhighlight> Dadas esas clases, una consulta simple para obtener la lista de todos los autores, ordenados alfabéticamente, sería: <syntaxhighlight lang="sql"> SELECT a FROM Autor a ORDER BY a.nombre, a.apellidos </syntaxhighlight> Para recuperar la lista de autores que han sido publicados alguna vez por XYZ Press: <syntaxhighlight lang="sql"> SELECT DISTINCT a FROM Autor a INNER JOIN a.libros b WHERE b.editorial.nombre = 'XYZ Press' </syntaxhighlight> JPQL admite parámetros con nombre, que comienzan por dos puntos (<code>:</code>). Se podría escribir una función que devuelve una lista de autores con el apellido indicado de la siguiente manera: <syntaxhighlight lang="java"> import javax.persistence.EntityManager; import javax.persistence.Query; import org.apache.commons.lang.StringUtils; ... @SuppressWarnings("unchecked") public List<Autor> getAutoresPorApellidos(String apellidos) { String queryString = "SELECT a FROM Autor a " + "WHERE :apellidos IS NULL OR LOWER(a.apellidos) = :apellidos"; Query query = getEntityManager().createQuery(queryString); query.setParameter("apellidos", StringUtils.lowerCase(apellidos)); return query.getResultList(); } </syntaxhighlight> == Hibernate Query Language == JPQL está basado en [[Hibernate|Hibernate Query Language]] (HQL), un lenguaje de consulta anterior no estándar incluido en la biblioteca de [[mapeo objeto-relacional]] [[Hibernate]]. Hibernate y HQL se crearon antes de la especificación JPA. Hasta la versión Hibernate 3, JPQL es un [[subconjunto]] de HQL. == Véase también == * [[Mapeo objeto-relacional]] * [[Hibernate]] * [[Java Persistence API]] == Enlaces externos == * [http://docs.oracle.com/javaee/6/tutorial/doc/bnbuf.html Full Query Language Syntax en The Java EE 6 Tutorial] * [http://www.objectdb.com/java/jpa/query JPA Queries and JPQL - un capítulo del manual de ObjectDB] * [http://torpedoquery.org Type safe Hibernate (HQL) query engine - TorpedoQuery] {{Control de autoridades}} [[Categoría:Lenguajes de consulta]] [[Categoría:Gestión de datos]] [[Categoría:Java EE]]
Resumen:
Al guardar los cambios aceptas los
términos de uso
y liberas de forma irrevocable tu contribución conforme a los términos de las licencias
licencia CC BY-SA 4.0
y
GFDL
. Aceptas igualmente que un hipervínculo o URL es atribución suficiente conforme a la licencia Creative Commons.
Cancelar
Ayuda de edición
(se abre en una ventana nueva)
Buscar
Buscar
Edición de «
Java Persistence Query Language
»
Añadir idiomas
Añadir tema