Documentos de Académico
Documentos de Profesional
Documentos de Cultura
pablomonteserin.com
ORM
pablomonteserin.com
Clave primaria
Usando Hibernate:
- es fundamental que las tablas tengan clave
primaria.
- no es posible modificar claves primarias.
pablomonteserin.com
Help -> Install new software -> (ojo!!!! no introducir esta url en el
work with) add -> pegamos ->
http://download.jboss.org/jbosstools/updates/stable/
- Marcamos, dentro de All Jboss Tools:
Hibernate Tools
pablomonteserin.com
http://hibernate.org/downloads
Enlace final:
http://sourceforge.net/projects/hibernate/files/hibernate3/
pablomonteserin.com
pablomonteserin.com
pablomonteserin.com
Hibernate.cfg.xml
Lo ms cmodo es copiarlo de otro proyecto, en
vez de generarlo nosotros.
Debe estar en la raz de la carpeta src.
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.bytecode.use_reflection_optimizer">false</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.isolation">2</property>
<property name="hibernate.connection.password">password</property>
<property name="hibernate.connection.pool_size">10</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost/pruebas</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.current_session_context_class">managed</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.show_sql">true</property>
<mapping resource="com/cursos/Simple.hbm.xml" />
</session-factory>
</hibernate-configuration>
pablomonteserin.com
pablomonteserin.com
pablomonteserin.com
Ojo!
Los campos
relacionados deben
contener informacin
del mismo tipo.
Entramos en relationView de la tabla que contiene la clave foranea para
relacionarla con la tabla que contiene la clave primaria.
Vamos a la combo del campo que ser clave fornea y seleccionamos la clave
Primaria de la propia tabla.
En la combo contigua seleccionamos la clave primaria de la tabla con la que estamos
enlazando
pablomonteserin.com
pablomonteserin.com
Configuracin de consola
Btn derecho sobre el paquete -> run as -> Run configurations -> Hibernate
Console Configuration -> new configuration
Pestaa Main
Proyect: nombre del proyecto.
Configuration file: setup y busco el archivo hibernate.cfg.xml de
Configuracin.
Pestaa ClassPath:
Me aseguro de que estn cargadas las 9 libreras indicadas en la
diapositiva anterior.
pablomonteserin.com
pablomonteserin.com
pablomonteserin.com
pablomonteserin.com
Mapeos de Hibernate
Las tablas de hibernate son mapeadas a ficheros *.hbm.xml. Si el archivo
hibernate.cfg.xml tiene una referencia a dichos mapeos y no los encuentra
fsicamente en el equipo, dar un error.
pablomonteserin.com
pablomonteserin.com
De JDBC a Hibernate
pablomonteserin.com
Hibernate API
http://docs.jboss.org/hibernate/core/3.5/javadocs/
pablomonteserin.com
pablomonteserin.com
Ejemplo
pablomonteserin.com
Transacciones
Cada request que llega del servidor debe ser atendido por una
sola transaccin.
En caso de fallo, lo que hay dentro del beginTransaction y el
commit no se ejecuta y se salta a un catch.
Siempre es ms rpido hacer dos operaciones en una sola
transaccin que dos operaciones en dos transacciones.
pablomonteserin.com
pablomonteserin.com
pablomonteserin.com
pablomonteserin.com
Ejercicio
1 Insertar cuatro registros.
2 - Insertar cuatro registros en la base de datos e
imprimir los libros del autor cuya clave primaria es
Tres.
3 Modificar uno de los registros insertados.
pablomonteserin.com
Ejercicio
Insertar un autor de un libro y ese mismo libro
pablomonteserin.com
Ejercicio
Insertar 5 libros en la base de datos. Dos
registros deben tener el mismo ttulo (titulo1);
Utilizar la clase criteria para mostrar los libros
cuyo ttulo contenga la palabra ''titulo''.
Ordenar la salida por id, e ir recorriendala
imprimiendo los ttulos y las id con
System.out.println();
pablomonteserin.com
pablomonteserin.com
pablomonteserin.com
Eliminar un registro
String queryString = "delete from Paciente where id=?";
Query hqlQuery = session.createQuery(queryString);
hqlQuery.setInteger(0, id);
hqlQuery.executeUpdate();
Consulta simple
Query hqlQuery = session.createQuery(''from libro'');
List result = hqlQuery.list();
Consulta ordenada
Query hqlQuery = session.createQuery(''from libro order by id'');
List result = hqlQuery.list();
Consulta con parmetro
String queryString = from Libro where nombre like ?;
Query hqlQuery = session.createQuery(queryString).setString(0, %Ro%);
Consulta con parmetro II
String queryString =from Hombre where nombre like: textSearch;
Query hqlQuery = session.createQuery(queryString).setString(''textSearch'', %o%);
Consulta en el hbm
Consulta definida en un mapeo hbm.xml
/*La siguiente consulta es recuperada del archivo Simple.hbm.xml. De todas formas,
funcionara desde cualquier otro mapeo.
En este caso, el cdigo presente en el mapeo es:
<query name="findLibroByTitulo">
<![CDATA[
from Libro l where l.titulo like :textoBusqueda
]]>
</query>
*/
Query hqlQuery = session.getNamedQuery("findLibroByTitulo").setParameter("textoBusqueda", "%a
%");
List result = hqlQuery.list();
pablomonteserin.com
Consulta relacionada
Aqu relaciono la tabla libro con la tabla autor
Consulta relacionada
String queryString = ''select l from libro l join l.autor a where a.nombre='nombre1' '';
Query hqlQuery = session.createQuery(queryString);
Consulta relacionada con coincidencia
String queryString = '' from Libro l where l.autor.nombre like :textSearch'';
Query hqlQuery = session.createQuery(queryString).setString(''textSearch'', ''%n%'');
Consulta sum
String queryString = ''select sum(l.id) from libro l '';
Query hqlQuery = session.createQuery(queryString);
pablomonteserin.com
pablomonteserin.com
Ejercicio
pablomonteserin.com