0% encontró este documento útil (0 votos)
158 vistas5 páginas

HQL

HQL es el lenguaje de consultas de Hibernate que permite obtener objetos de la base de datos. Las consultas se realizan sobre los objetos del modelo de negocio en lugar de sobre las tablas de la base de datos. HQL es similar al SQL pero orientado a objetos, soporta operaciones como seleccionar, insertar, actualizar y eliminar datos, y es independiente del motor de base de datos subyacente.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
158 vistas5 páginas

HQL

HQL es el lenguaje de consultas de Hibernate que permite obtener objetos de la base de datos. Las consultas se realizan sobre los objetos del modelo de negocio en lugar de sobre las tablas de la base de datos. HQL es similar al SQL pero orientado a objetos, soporta operaciones como seleccionar, insertar, actualizar y eliminar datos, y es independiente del motor de base de datos subyacente.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 5

Mae stría e n Si st em as

Comput aci onal e s

Lenguajes Web
Lizbeth Hernández Olán
Unidad3. Actividad 1. HQL
13/03/2018
LENGUAJES WEB LIZBETH HERNANDEZ OLAN

¿Qué es HQL?
El Hibernate Query Languaje (HQL) es el lenguaje de Se escriben las consultas en HQL e Hibernate se
consultas que usa Hibernate para obtener los encarga de convertirlas al SQL usado por la base de
objetos desde la base de datos. Su principal datos con la que estemos trabajando y ejecutarla
particularidad es que las consultas se realizan sobre para realizar la operación indicada.
los objetos java que forman el modelo de negocio,
es decir, las entidades que se persisten en
Hibernate.

Puntos a resaltar de HQL: HQL es case-insensitive, es decir, que sus sentencias


• Los tipos de datos son los de Java. pueden escribirse en mayúsculas y minúsculas. Por
• Las consultas son independientes del lo tanto "SeLeCt", "seleCT", "select", y "SELECT" se
lenguaje de SQL específico de la base de entienden igual.
datos Donde se debe tener cuidado es con los nombres de
• Las consultas son independientes del
las clases que estamos recuperando y con sus
modelo de tablas de la base de datos.
propiedades, ahí si se distinguen mayúsculas y
• Es posible tratar con las colecciones de Java.
minúsculas, es decir, "pruebas.hibernate.Usuario"
• Es posible navegar entre los distintos objetos
no es lo mismo que "PrueBAs.HibernatE.UsuArio".
en la propia consulta.

HQL es muy parecido al SQL estándar, con la Estas son algunas de las características más
diferencia de que es completamente orientado a importantes que nos proporciona HQL:
objetos (usamos nombres de clases y sus atributos
en lugar de nombres de tablas y columnas), por lo • Soporte completo para operaciones
que podemos usar cosas como herencia, relacionales: HQL permite representar
consultas SQL en forma de objetos. HQL usa
polimorfismo y asociaciones.
clases y atributos o propiedades en vez de
tablas y columnas.

UNIDAD 3. PERSISTENCIA 1
LENGUAJES WEB LIZBETH HERNANDEZ OLAN

• Regresa sus resultados en forma de objetos: siempre están presentes en todas las bases
Las consultas realizadas usando HQL de datos, o no es fácil usarlas, como
regresan los resultados de las mismas en la paginación, fetch joins con perfiles
forma de objetos o listas de objetos, que son dinámicos, inner y outer joins, etc. Además
más fáciles de usar, ya que eliminan la soporta proyecciones, funciones de
necesidad de crear un objeto y llenarlo con agregación (max, avg), y agrupamientos,
los datos obtenidos de un ResultSet (como ordenamientos, y subconsultas.
hacemos normalmente cuando trabajamos • Independiente del manejador de base de
con JDBC). datos: Las consultas escritas en HQL son
• Consultas Polimórficas: Podemos declarar el independientes de la base de datos (siempre
resultado usando el tipo de la superclase y que la base de datos soporte la característica
Hibernate se encargará de crear los objetos que estamos intentando utilizar).
adecuados de las subclases correctas de
forma automática.
Hibernate es un entorno de trabajo que tiene como
• Fácil de Aprender: Es muy similar a SQL
objetivo facilitar la persistencia de objetos Java en
estándar.
bases de datos relacionales y al mismo tiempo la
• Soporte para características avanzadas:
HQL contiene muchas características consulta de estas bases de datos para obtener
avanzadas que son muy útiles y que no objetos.

UNIDAD 3. PERSISTENCIA 2
LENGUAJES WEB LIZBETH HERNANDEZ OLAN

Operaciones básicas en una Base de Datos

Altas (HQL Insert)


Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();

String hqlInsert = "insert into


DelinquentAccount (id, name) select c.id, c.name
from Customer c where ...";
int createdEntities = s.createQuery( hqlInsert )
.executeUpdate();
tx.commit();
session.close();

Bajas (Delete HQL)


Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();

String hqlDelete = "delete Customer where name = :oldName";


int deletedEntities = s.createQuery( hqlDelete )
.setString( "oldName", oldName )
.executeUpdate();
tx.commit();
session.close();

Cambios/Actualizaciones (HQL Update)

Session session = sessionFactory.openSession();


Transaction tx = session.beginTransaction();

String hqlUpdate = "update Customer c set c.name = :newName where c.name = :oldName";
// or String hqlUpdate = "update Customer set name = :newName where name = :oldName";
int updatedEntities = s.createQuery( hqlUpdate )
.setString( "newName", newName )
.setString( "oldName", oldName )
.executeUpdate();
tx.commit();
session.close();

UNIDAD 3. PERSISTENCIA 3
LENGUAJES WEB LIZBETH HERNANDEZ OLAN

Ejecución de Consultas/Reportes

Las consultas HQL y SQL nativas son representadas con una instancia de org.hibernate.Query. Esta interfaz ofrece
métodos para ligar parámetros, manejo del conjunto resultado, y para la ejecución de la consulta real. Siempre obtiene
una Query utilizando la Session actual:

List cats = session.createQuery(


"from Cat as cat where cat.birthdate < ?")
.setDate(0, date)
.list();

List mothers = session.createQuery(


"select mother from Cat as cat join cat.mother as mother where cat.name = ?")
.setString(0, name)
.list();

List kittens = session.createQuery(


"from Cat as cat where cat.mother = ?")
.setEntity(0, pk)
.list();

Cat mother = (Cat) session.createQuery(


"select cat.mother from Cat as cat where cat = ?")
.setEntity(0, izi)
.uniqueResult();]]

Query mothersWithKittens = (Cat) session.createQuery(


"select mother from Cat as mother left join fetch mother.kittens");
Set uniqueMothers = new HashSet(mothersWithKittens.list());

Fuentes de Información
Roses Albiol, Francesc (2003). Introducción a Hibernate. Obtenido de:
http://froses.cat/Assets/Files/Articles/Hibernate_Introduccion_es.pdf

Curso Hibernate. Obtenido de: http://cursohibernate.es/doku.php?id=unidades:05_hibernate_query_language:02_hql

Hibernate, Community Documentation. Obtenido de: https://docs.jboss.org/hibernate/orm/3.5/reference/es-


ES/html/tutorial.html

Tutoriales de programación Java. Hibernate - Parte 7: HQL Primera Parte. Obtenido de:
http://www.javatutoriales.com/2009/09/hibernate-parte-7-hql-primera-parte.html

UNIDAD 3. PERSISTENCIA 4

También podría gustarte