HibernateUtil Clases para JAVA
Enviado por mentolate • 4 de Diciembre de 2015 • Apuntes • 527 Palabras (3 Páginas) • 241 Visitas
HQL. Introducción
• Es un lenguaje de base de datos similar al SQL,
completamente orientado a objetos, usamos nombres
de clases y sus propiedades en lugar de nombres de
tablas y columnas.
• No diferencia entre mayúsculas y minúsculas excepto
en los nombres de clases…
• Regresa sus resultados en forma de objetos
• Independiente del manejador de base de datos
• No existe el select *
• Para hacer referencia a algún campo necesitamos
haberle asignado un alias a la tabla
FROM Usuario as u WHERE u.id = 1
FROM Usuario u WHERE u.id = 1
HQL
• Podemos asignar alias a las entidades asociadas o a los
elementos de una colección de valores usando un join
(las propiedades que sirven de enlaces entre clases):
FROM Usuario u inner join u.permisos as p
• Existen dos formas de referirnos a la propiedad que
sirve como identificador de la entidad:
– La propiedad especial “id” (así con minúsculas). No
importa si la clase entidad no tiene una propiedad llamada
id.
FROM Usuario as u WHERE u.id = 1
– Por la propiedad identificador
FROM Usuario as u WHERE u.clave = 1
HQL. Fetch join LAZY
@Entity
public class Libro implements Serializable
{ @Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;
private String titulo;
public class Persona implements Serializable
{ @Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;
private String nombre;
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
@JoinColumn (name="personaID")
private List<Libro> libros = new ArrayList<Libro>();
Esto quiere decir que cuando recuperemos, ya dentro de una aplicación, a la
Persona, sus libros no serán recuperados e inicializados en ese momento. Al
hacer referencia a persona.getLibros() se realizará el select necesario
HQL. Fetch join LAZY
Fetch Join no se permite con iterate
Query cons = sesion.createQuery("from Persona per left join fetch per.libros");
List<Persona> listaContactos = cons.list(); //sin left no aparecen las personas sin libros
System.out.println("Hay " + listaContactos.size() + "contactos en la base de datos");
Integer idper=0;
for(Persona c : listaContactos)
{
if ( idper!= c.getId()) {//con esto consigo que no se repita persona y sus libros por cada
libro que tenga
System.out.println("Nombre Persona : " + c.getNombre() +"tiene los siguientes libros
");
List <Libro> listaLibros=c.getLibros();
...