Hibernate Curso AME
Hibernate Curso AME
Hibernate Curso AME
Aplicacion Imperium.
Arquitectura Endesa.
15/01/2007
Breve introducion a Hibernate
[email protected]
www.endesa.es
1
Contenidos.
Capitulos.
1. Introducion a Hibernate.
2. Imperium. Ejemplo de Hibernate.
3. Consulta de Datos.
3.1. HQL.
3.2. QBE,QBC,SQL.
4. Otra forma.
Sistemas y Telecomunicaciones < Nombre del Documento >
2 < Fecha del Documento >
2
Introducion a Hibernate.Persistencia de datos.
3
Introducion a Hibernate.Persistencia de datos.
3
Introducion a Hibernate.Persistencia de datos.
3
Introducion a Hibernate.Persistencia de datos.
3
Introducion a Hibernate.Persistencia de datos.
3
Introducion a Hibernate.Persistencia de datos.
3
Introducion a Hibernate.Persistencia de datos.
3
Introducion a Hibernate.Persistencia de datos.
3
Introducion a Hibernate.Persistencia de datos.
3
Introducion a Hibernate.Persistencia de datos.
3
Hibernate.
ORM .
4
Hibernate como herramienta ORM.
Definicion:
“Un ORM ( Object Relational Mapping) es un sistema que nos permite almacenar
Objetos de nuestra aplicación java en tablas de una base de datos relacional de
manera transparente , usando metadatos que describen la relación entre nuestros
objetos y la base de datos”
5
Hibernate como herramienta ORM.
Definicion:
“Un ORM ( Object Relational Mapping) es un sistema que nos permite almacenar
Objetos de nuestra aplicación java en tablas de una base de datos relacional de
manera transparente , usando metadatos que describen la relación entre nuestros
objetos y la base de datos”
5
Hibernate como herramienta ORM.
Definicion:
“Un ORM ( Object Relational Mapping) es un sistema que nos permite almacenar
Objetos de nuestra aplicación java en tablas de una base de datos relacional de
manera transparente , usando metadatos que describen la relación entre nuestros
objetos y la base de datos”
5
Hibernate como herramienta ORM.
Definicion:
“Un ORM ( Object Relational Mapping) es un sistema que nos permite almacenar
Objetos de nuestra aplicación java en tablas de una base de datos relacional de
manera transparente , usando metadatos que describen la relación entre nuestros
objetos y la base de datos”
5
Hibernate como herramienta ORM.
Definicion:
“Un ORM ( Object Relational Mapping) es un sistema que nos permite almacenar
Objetos de nuestra aplicación java en tablas de una base de datos relacional de
manera transparente , usando metadatos que describen la relación entre nuestros
objetos y la base de datos”
5
Hibernate como herramienta ORM.
Definicion:
“Un ORM ( Object Relational Mapping) es un sistema que nos permite almacenar
Objetos de nuestra aplicación java en tablas de una base de datos relacional de
manera transparente , usando metadatos que describen la relación entre nuestros
objetos y la base de datos”
5
Hibernate como herramienta ORM.
Definicion:
“Un ORM ( Object Relational Mapping) es un sistema que nos permite almacenar
Objetos de nuestra aplicación java en tablas de una base de datos relacional de
manera transparente , usando metadatos que describen la relación entre nuestros
objetos y la base de datos”
5
Hibernate como herramienta ORM.
Definicion:
“Un ORM ( Object Relational Mapping) es un sistema que nos permite almacenar
Objetos de nuestra aplicación java en tablas de una base de datos relacional de
manera transparente , usando metadatos que describen la relación entre nuestros
objetos y la base de datos”
5
Hibernate.Creador.
Gaving King
6
Por qué Hibernate.
7
Por qué Hibernate.
7
Por qué Hibernate.
Codigo Abierto. Con todas las ventajas que eso aporta, más
seguro , mas estable, independencia del vendedor.kry.
7
Por qué Hibernate.
Codigo Abierto. Con todas las ventajas que eso aporta, más
seguro , mas estable, independencia del vendedor.kry.
Excelente documentado.
7
Por qué Hibernate.
Codigo Abierto. Con todas las ventajas que eso aporta, más
seguro , mas estable, independencia del vendedor.kry.
Excelente documentado.
Desarrollo activo.
7
Por qué Hibernate.
Codigo Abierto. Con todas las ventajas que eso aporta, más
seguro , mas estable, independencia del vendedor.kry.
Excelente documentado.
Desarrollo activo.
7
Por qué Hibernate.
Codigo Abierto. Con todas las ventajas que eso aporta, más
seguro , mas estable, independencia del vendedor.kry.
Excelente documentado.
Desarrollo activo.
Estandar de facto.
7
Por qué Hibernate.
Codigo Abierto. Con todas las ventajas que eso aporta, más
seguro , mas estable, independencia del vendedor.kry.
Excelente documentado.
Desarrollo activo.
Estandar de facto.
más cosas.
Sistemas y Telecomunicaciones < Nombre del Documento >
7 < Fecha del Documento >
7
Mitos y Leyendas sobre hibernate.
8
Mitos y Leyendas sobre hibernate.
8
Mitos y Leyendas sobre hibernate.
Rendimiento.
8
Mitos y Leyendas sobre hibernate.
Rendimiento.
8
Mitos y Leyendas sobre hibernate.
Rendimiento.
Caja Negra.
8
Mitos y Leyendas sobre hibernate.
Rendimiento.
Caja Negra.
No es estandar.
8
Mitos y Leyendas sobre hibernate.
Rendimiento.
Caja Negra.
No es estandar.
8
Mitos y Leyendas sobre hibernate.
Rendimiento.
Caja Negra.
No es estandar.
Te atas a un provedor.
8
Mitos y Leyendas sobre hibernate.
Rendimiento.
Caja Negra. O S
LS
FA
S
No es estandar.
O
D
TO
Te atas a un servidor de aplicaciones.
Te atas a un provedor.
8
Hibernate.
Imperium .
9
Aplicacion de Ejemplo. Imperium.
10
Hibernate. Imperium.
Modelo .
11
Relacion Uml entre Familias , Patricios y Legionarios .
1 N 1 1
12
Clase Patricios
Los métodos get y set se
han suprimido por claridad.
private Long id ;
private String nombre;
private Integer edad;
public Patricios() {
}
}
13
13
Relacion uml entre Legionarios y Legiones
N
0
N 1
14
Clase Legiones
package com.endesa.ame4j.imperium.modelo;
import java.io.Serializable;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
15
Clase Legionarios.
package com.endesa.ame4j.imperium.modelo;
import java.io.Serializable;
public Legionarios() {
}
}
16
Relacion uml entre Legiones y Batallas.
N N
17
Clase Batallas.
package com.endesa.ame4j.imperium.modelo;
import java.io.Serializable;
import java.util.Date;
import java.util.Set;
private Long id ;
private String nombre;
private String lugar ;
private Date fecha;
private Boolean victoria;
private Set legiones;
public Batallas() {
}
18
uml modelo .
N
0
1 N N N
1 N
19
Hibernate. Imperium.
Ficheros
xml .
20
Configuracion Hibernate. Relacion Clase Patricios.
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.endesa.ame4j.imperium.modelo"
default-access="field">
<class name="Patricios">
</class>
</hibernate-mapping>
21
Configuracion Hibernate. Relacion Clase Patricios.
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.endesa.ame4j.imperium.modelo"
default-access="field">
<class name="Patricios">
<id name="id" type="long" >
<column name="ID_PATRICIOS" />
<generator class="native"/>
</id>
</class>
</hibernate-mapping>
21
Configuracion Hibernate. Relacion Clase Patricios.
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.endesa.ame4j.imperium.modelo"
default-access="field">
<class name="Patricios">
<id name="id" type="long" >
<column name="ID_PATRICIOS" />
<generator class="native"/>
</id>
</class>
</hibernate-mapping>
21
Configuracion Hibernate. Ralacion Clase Legiones.
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-
mapping-3.0.dtd">
<hibernate-mapping package="com.endesa.ame4j.imperium.modelo" default-access="field">
<class name="Legiones">
<id name="id" type="long">
<column name="ID_LEGIONES" />
<generator class="native"/>
</id>
<property name="nombre" length="50"/>
</class>
</hibernate-mapping>
22
Configuracion Hibernate. Ralacion Clase Legiones.
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-
mapping-3.0.dtd">
<hibernate-mapping package="com.endesa.ame4j.imperium.modelo" default-access="field">
<class name="Legiones">
<id name="id" type="long">
<column name="ID_LEGIONES" />
<generator class="native"/>
</id>
<property name="nombre" length="50"/>
<many-to-one name="general" class="Patricios" column="FK_ID_PATRICIOS" unique="true"/>
</class>
</hibernate-mapping>
22
Configuracion Hibernate. Ralacion Clase Legiones.
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-
mapping-3.0.dtd">
<hibernate-mapping package="com.endesa.ame4j.imperium.modelo" default-access="field">
<class name="Legiones">
<id name="id" type="long">
<column name="ID_LEGIONES" />
<generator class="native"/>
</id>
<property name="nombre" length="50"/>
<many-to-one name="general" class="Patricios" column="FK_ID_PATRICIOS" unique="true"/>
<set name="legionarios" cascade="all,delete-orphan" inverse="true">
<key column="FK_ID_LEGIONES"/>
<one-to-many class="Legionarios" />
</set>
</class>
</hibernate-mapping>
22
Configuracion Hibernate. Relacion Clase Legionarios.
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.endesa.ame4j.imperium.modelo" default-access="field">
<class name="Legionarios">
</class>
</hibernate-mapping>
23
Configuracion Hibernate. Relacion Clase Legionarios.
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.endesa.ame4j.imperium.modelo" default-access="field">
<class name="Legionarios">
</class>
</hibernate-mapping>
23
Configuracion Hibernate. Relacion Clase Legionarios.
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.endesa.ame4j.imperium.modelo" default-access="field">
<class name="Legionarios">
23
Configuracion Hibernate. Relacion Clase Batallas.
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.endesa.ame4j.imperium.modelo" default-access="field">
<class name="Batallas">
<property name="nombre"/>
<property name="lugar"/>
<property name="fecha" type="timestamp" />
<property name="victoria" type="boolean" />
24
Hibernate. Imperium.
Spring .
25
Configuracion Hibernate. Fichero de Spring.
</beans>
26
Configuración Hibernate. Fichero de Spring.
</bean>
27
Configuración Hibernate. Fichero de Spring.
<property name="mappingResources">
<list>
<value>com/endesa/ame4j/imperium/modelo/Patricios.hbm.xml</value>
<value>com/endesa/ame4j/imperium/modelo/Legiones.hbm.xml</value>
<value>com/endesa/ame4j/imperium/modelo/Legionarios.hbm.xml</value>
<value>com/endesa/ame4j/imperium/modelo/Batallas.hbm.xml</value>
<value>com/endesa/ame4j/imperium/modelo/Familias.hbm.xml<value>
</list>
</property>
</bean>
27
Configuración Hibernate. Fichero de Spring.
<property name="mappingResources">
<list>
<value>com/endesa/ame4j/imperium/modelo/Patricios.hbm.xml</value>
<value>com/endesa/ame4j/imperium/modelo/Legiones.hbm.xml</value>
<value>com/endesa/ame4j/imperium/modelo/Legionarios.hbm.xml</value>
<value>com/endesa/ame4j/imperium/modelo/Batallas.hbm.xml</value>
<value>com/endesa/ame4j/imperium/modelo/Familias.hbm.xml<value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.DerbyDialect</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.max_fetch_depth">0</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.use_sql_comments">false</prop>
</props>
</property>
</bean>
27
Configuración Hibernate. Fichero de Spring.
<property name="mappingResources">
<list>
<value>com/endesa/ame4j/imperium/modelo/Patricios.hbm.xml</value>
<value>com/endesa/ame4j/imperium/modelo/Legiones.hbm.xml</value>
<value>com/endesa/ame4j/imperium/modelo/Legionarios.hbm.xml</value>
<value>com/endesa/ame4j/imperium/modelo/Batallas.hbm.xml</value>
<value>com/endesa/ame4j/imperium/modelo/Familias.hbm.xml<value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.DerbyDialect</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.max_fetch_depth">0</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.use_sql_comments">false</prop>
</props>
</property>
</bean>
27
Configuracion Hibernate. Fichero de Spring.
28
Configuracion Hibernate. Fichero de Spring.
28
Configuracion Hibernate. Fichero de Spring.
<aop:config>
<aop:pointcut id="metodos"
expression="execution(* com.endesa.ame4j.imperium.dao.Dao*.* (..))"/>
<aop:advisor advice-ref="consejo" pointcut-ref="metodos"/>
</aop:config>
No ha
ce
aplica r en
ciones
28
Configuracion Hibernate. Fichero de Spring.
<aop:config>
<aop:pointcut id="metodos"
expression="execution(* com.endesa.ame4j.imperium.dao.Dao*.* (..))"/>
<aop:advisor advice-ref="consejo" pointcut-ref="metodos"/>
</aop:config>
No ha
ce
aplica r en
<bean id="dao" class="com.endesa.ame4j.imperium.dao.DaoGeneral" >
<property name="sessionFactory" ref="creador"/> ciones
</bean>
<bean id="daoLegiones" class="com.endesa.ame4j.imperium.dao.DaoLegiones" >
<property name="sessionFactory" ref="creador"/>
</bean>
28
Contrato Capa Acceso a Datos.
29
Contrato Capa Acceso a Datos.
package com.endesa.ame4j.imperium.dao;
public interface Persistir {
public void insertar(Object objeto);
public Object buscarPorId(Class clase , Long id);
public void borrar(Object objeto);
public void modificar(Object objeto);
}
29
Contrato Capa Acceso a Datos.
package com.endesa.ame4j.imperium.dao;
public interface Persistir {
public void insertar(Object objeto);
public Object buscarPorId(Class clase , Long id);
public void borrar(Object objeto);
public void modificar(Object objeto);
}
package com.endesa.ame4j.imperium.dao;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class DaoGeneral extends HibernateDaoSupport implements Persistir {
public void insertar(Object objeto){
getSession().save(objeto);
}
public Object buscarPorId(Class clase, Long id) {
return getSession().get(clase, id);
}
public void borrar(Object objeto) {
getSession().delete(objeto);
}
public void modificar(Object objeto) {
Session sesion = getSession();
sesion.update(objeto);
}
}
29
ESQUEMA DE BASE DE DATOS CREADO POR HIBERNATE EN DERBY
30
ESQUEMA DE BASE DE DATOS CREADO POR HIBERNATE EN HSQL
31
Test sobre los datos.
Insercion
Borrado
Modificar
32
Test de insercion.
Patricios
public void testInsertar(){
Patricios patricios = new Patricios("Romius Maximus",25);
dao.insertar(patricios);
assertNotNull(patricios.getId());
}
Batallas
public void testInsertar(){
Batallas batallas = new Batallas("Cannae","Llanura de Cannae",false,new Date());
dao.insertar(batallas);
assertNotNull(batallas.getId());
}
Legiones
public void testInsertar(){
Legiones legiones = new Legiones("DecimoNovena Celta");
dao.insertar(legiones);
assertNotNull(legiones.getId());
}
Legionarios
public void testInsertar(){
long indice = -1 ;
Legiones legiones = new Legiones(); legiones.setId(indice);
Legionarios legionarios = new Legionarios("Plinius Antonius",legiones);
dao.insertar(legionarios); assertNotNull(legionarios.getId()); }
33
Test de Borrado.
Patricios
public void testBorrar(){
Patricios patriciosBbdd=
(Patricios)dao.buscarPorId(Patricios.class,patricios.getId());
assertEquals(patricios.getId(), patriciosBbdd.getId());
dao.borrar(patricios);
Patricios patriciosFantasmas=
(Patricios)dao.buscarPorId(Patricios.class,patricios.getId());
assertNull(patriciosFantasmas);
}
34
Test encontrar por clave primaria.
35
Test no encontrar por clave primaria.
Legiones
public void testNoEncontrarPorId(){
long indice = -1;
Legiones legiones = (Legiones)dao.buscarPorId(Legiones.class, indice);
assertNull(legiones);
}
Legionarios
public void testNoEncontrarPorId(){
long indice = -1;
Legionarios legionarios = (Legionarios)dao.buscarPorId(Legionarios.class, indice);
assertNull(legionarios);
}
36
Test Modificar.
37
Test Modificar.
dao.modificar(legiones);
Legiones legionesModificada = (Legiones)dao.buscarPorId(Legiones.class, indice);
assertEquals(nombre, legionesModificada.getNombre());
}
37
Test Modificar.
dao.modificar(legiones);
Legiones legionesModificada = (Legiones)dao.buscarPorId(Legiones.class, indice);
assertEquals(nombre, legionesModificada.getNombre());
}
37
Test Modificar.
Interfaz
package com.endesa.ame4j.imperium.dao;
Desarrollo de la Interfaz
package com.endesa.ame4j.imperium.dao;
38
Reclutamiento.
package com.endesa.ame4j.imperium.dao;
Interfaz
import java.util.Collection;
import com.endesa.ame4j.imperium.modelo.Legionarios;
import com.endesa.ame4j.imperium.modelo.Legiones;
39
Reclutamiento.
40
Reclutamiento.
package com.endesa.ame4j.imperium.dao;
Desarrollo de Interfaz Reclutamiento
import java.util.Collection;
import com.endesa.ame4j.imperium.modelo.Legionarios;
import com.endesa.ame4j.imperium.modelo.Legiones;
40
Reclutamiento.
package com.endesa.ame4j.imperium.dao;
Desarrollo de Interfaz Reclutamiento
import java.util.Collection;
import com.endesa.ame4j.imperium.modelo.Legionarios;
import com.endesa.ame4j.imperium.modelo.Legiones;
40
Reclutamiento.
package com.endesa.ame4j.imperium.dao;
Desarrollo de Interfaz Reclutamiento
import java.util.Collection;
import com.endesa.ame4j.imperium.modelo.Legionarios;
import com.endesa.ame4j.imperium.modelo.Legiones;
40
Reclutamiento.
package com.endesa.ame4j.imperium.dao;
Desarrollo de Interfaz Reclutamiento
import java.util.Collection;
import com.endesa.ame4j.imperium.modelo.Legionarios;
import com.endesa.ame4j.imperium.modelo.Legiones;
40
Reclutamiento.Desarrollo de la interfaz.
41
Reclutamiento.Desarrollo de la interfaz.
41
Reclutamiento.Desarrollo de la interfaz.
41
Hibernate.
42
Mitos y Leyendas. Genera Mucho SQL
43
Hibernate para consultas a Base de Datos.
44
Hibernate para consultas a Base de Datos.
HQL
Hibernate Query Lenguague
44
Hibernate para consultas a Base de Datos. HQL.
45
Hibernate para consultas a Base de Datos. HQL.
45
Hibernate para consultas a Base de Datos. HQL.
45
Hibernate para consultas a Base de Datos. HQL.
45
Hibernate para consultas a Base de Datos. HQL.
45
Ejemplos de HQL. Ejemplo 1.
¿Todas las batallas en las que haya participado el Consul Quinto Varro ?
SQL
HQL
46
Ejemplos de HQL. Ejemplo 1.
¿Todas las batallas en las que haya participado el Consul Quinto Varro ?
HQL
46
Ejemplos de HQL. Ejemplo 1.
¿Todas las batallas en las que haya participado el Consul Quinto Varro ?
46
Ejemplos de HQL. Ejemplo 2.
SQL
HQL
47
Ejemplos de HQL. Ejemplo 2.
HQL
47
Ejemplos de HQL. Ejemplo 2.
47
Ejemplos de HQL. Ejemplo 3.
SQL
HQL
48
Ejemplos de HQL. Ejemplo 3.
select count(l.ID_LEGIONARIOS)
from Legionarios l, Legiones legiones
SQL
where l.FK_ID_LEGIONES=legiones.ID_LEGIONES
and legiones.nombre='tercera hispanica'
HQL
48
Ejemplos de HQL. Ejemplo 3.
select count(l.ID_LEGIONARIOS)
from Legionarios l, Legiones legiones
SQL
where l.FK_ID_LEGIONES=legiones.ID_LEGIONES
and legiones.nombre='tercera hispanica'
48
Ejemplos de HQL. Ejemplo 4.
select count(l.ID_LEGIONARIOS)
from Legionarios l, Legiones legiones , PATRICIOS p
where l.FK_ID_LEGIONES=legiones.ID_LEGIONES
and p.nombre='Quinto Varro' SQL
and legiones.fk_id_patricios = p.ID_PATRICIOS
and legiones.id_legiones = l.fk_id_legiones
HQL
49
Ejemplos de HQL. Ejemplo 4.
select count(l.ID_LEGIONARIOS)
from Legionarios l, Legiones legiones , PATRICIOS p
where l.FK_ID_LEGIONES=legiones.ID_LEGIONES
and p.nombre='Quinto Varro' SQL
and legiones.fk_id_patricios = p.ID_PATRICIOS
and legiones.id_legiones = l.fk_id_legiones
49
Ejemplos de HQL. Ejemplo 5.
SQL
HQL
50
Ejemplos de HQL. Ejemplo 5.
HQL
50
Ejemplos de HQL. Ejemplo 5.
50
Ejemplos de HQL. Ejemplo 5.
50
Ejemplos de HQL. Ejemplo 5.
50
Ejemplos de HQL. Ejemplo 6.
HQL
51
Ejemplos de HQL. Ejemplo 6.
51
Hibernate.
QBE.
Sistemas y Telecomunicaciones < Nombre del Documento >
52 < Fecha del Documento >
52
Mas alla del HQL. QBE.
package com.endesa.ame4j.imperium.modelo;
import java.io.Serializable;
private Long id ;
private String nombre;
private Integer edad;
}
Selección de Patricios
Nombre
Edad
Aceptar Cancelar
53
Mas alla del HQL. QBE.
return lista
54
Mas alla del HQL. QBE.
return lista
return criterios.list();
}
54
Hibernate.
QBC.
Sistemas y Telecomunicaciones < Nombre del Documento >
55 < Fecha del Documento >
55
Mas alla del HQL. QBC.
return sesion.createCriteria(Patricios.class).add(ejemplo).list();
56
Hibernate.
SQL.
Sistemas y Telecomunicaciones < Nombre del Documento >
57 < Fecha del Documento >
57
Mas alla del HQL. SQL.
58
Mas alla del HQL. SQL.
58
Mas alla del HQL. SQL.
Usar las funciones del api de hibernate para trabajar con sql.
58
Mas alla del HQL. SQL.
Usar las funciones del api de hibernate para trabajar con sql.
return sesion.createSQLQuery(sentenciaSQL,"patricios",Patricios.class).list();
58
Mas alla del HQL. SQL.
Usar las funciones del api de hibernate para trabajar con sql.
return sesion.createSQLQuery(sentenciaSQL,"patricios",Patricios.class).list();
58
Mas alla del HQL. SQL. ibatis.
59
Mas alla del HQL. SQL. ibatis.
</hibernate-mapping>
59
Mas alla del HQL. SQL. ibatis.
<sql-query name="consultasql">
select {p.*} from Patricios p
where p.edad = 35
<return alias="consul" class="Patricios"></return>
</sql-query>
</hibernate-mapping>
59
Mas alla del HQL. SQL. ibatis.II
Query q = session.getNamedQuery("sentenciaSQL");
List resultado = q.list();
return resultado;
}
60
Mas alla del HQL. SQL. ibatis.II
Query q = session.getNamedQuery("sentenciaSQL");
List resultado = q.list();
return resultado;
}
60
Hibernate.
Resumen.
Sistemas y Telecomunicaciones < Nombre del Documento >
61 < Fecha del Documento >
61
Resumen. Virtudes del uso Hibernate para el acceso datos.
62
Resumen. Virtudes del uso Hibernate para el acceso datos.
62
Resumen. Virtudes del uso Hibernate para el acceso datos.
62
Resumen. Virtudes del uso Hibernate para el acceso datos.
62
Resumen. Virtudes del uso Hibernate para el acceso datos.
62
Resumen. Virtudes del uso Hibernate para el acceso datos.
62
Resumen. Virtudes del uso Hibernate para el acceso datos.
62
Hibernate. Otra Forma de Configurar.
63
Hibernate. Otra forma de Configurar.
64
Hibernate. Otra forma de Configurar.
65
Clase Patricios
Los métodos
get y set se han
suprimido por
claridad.
package com.endesa.ame4j.imperium.modelo;
import javax.persistence.*;
@Entity
public class Patricios implements java.io.Serializable {
@Id @GeneratedValue
@Column(name="ID_PATRICIOS")
private long id;
private String nombre;
private Integer edad;
public Patricios() {
}
66
Clase Legionarios
Los métodos
get y set se han
suprimido por
claridad.
package com.endesa.ame4j.imperium.modelo;
import javax.persistence.*;
@Entity
public class Legionarios implements java.io.Serializable {
@Id @GeneratedValue
@Column(name="ID_LEGIONARIOS", unique=false, nullable=false, insertable=true,updatable=true)
private long id;
private String nombre;
@ManyToOne(cascade={},fetch=FetchType.LAZY)
@JoinColumn(name="FK_ID_LEGIONES",unique=false, nullable=false,insertable=true,updatable=true)
private Legiones legion;
@ManyToOne(cascade={},fetch=FetchType.LAZY)
@JoinColumn(name="FK_ID_JEFE", unique=false, nullable=true, insertable=true, updatable=true)
private Legionarios jefe;
67
Hibernate. Imperium.
Fin.
Sistemas y Telecomunicaciones < Nombre del Documento >
68 < Fecha del Documento >
68