Professional Documents
Culture Documents
Introduccin
Introduccin a Hibernate
Introduccin
En cualquier aplicacin (mediana o grande) se necesitan mecanismos para persistir sus datos.
Esto requiere elementos especficos que no se relacionan directamente con la lgica de la aplicacin.
17/06/2012
Introduccin
Adems, estos requerimientos incluyen nuevos elementos de diseo que deben ser tomados en consideracin.
Manejador de la base de datos Separacin del modelo de los dems componentes Utilizar DDL y DML (Data Definition/Manipulation Language) Concurrencia Integridad
Soluciones
Patrones de diseo
Strategy para intercambiar el mtodo de acceso a los datos en diferentes lugares Adapter para unificar la heterogeneidad entre DBMS Facade para proveer una interfaz simplificada de los mtodos de acceso y manipulacin de los datos
Modelos relacionales
17/06/2012
No es lo mismo
UPDATE alumno SET carrera=ITC WHERE matricula=a01211143 (sin lgica)
No es lo mismo
Tablas (teora de conjuntos)
17/06/2012
Complicado
Se puede
Realizar lgica en el modelo (stored procedures) ayudara a evitar la repeticin de cdigo.
Realizar persistencia en el cdigo podra ayudar a tener control sobre los datos de la aplicacin.
Complicado
Se puede
Cambiar el tipo de la base de datos a una base orientada a objetos Usar serializacin para persistir objetos
O mejor
Se puede
Separacin de responsabilidades
Lgica: Objetos Persistencia: Modelo relacional
17/06/2012
Componentes de ORM
Un API para implementar operaciones bsicas (altas, bajas, cambios) Un lenguaje para especificar consultas sobre clases y objetos Definiciones para especificar los metadatos del mapeo Herramientas para especificar optimizaciones
ORM
17/06/2012
Tipos de ORM
Relacional puro
Uso de stored procedures para realizar el mapeo
Mapeo ligero
Mapeo manual realizado por cdigo que ejecuta SQL
Mapeo medio
Se utilizan objetos simples que son transformados por mecanismos automatizados
Mapeo completo
Permiten relaciones de composicin, herencia y polimorfismo
Cuestiones de diseo
Se debe cuidar
Cmo se disean los metadatos y las clases Cmo se har el mapeo de las jerarquas de clases Relacin entre identidad de objetos e identidad de registros Ciclo de vida de los objetos Herramientas para bsqueda y ordenamiento Eficiencia en consultas de datos con asociaciones
Cuestiones de diseo
Adems
Transacciones Concurrencia
17/06/2012
Hibernate
Introduccin a Hibernate
Hibernate
Es una herramienta para ORM
Permite la definicin del mapeo entre clases en Java y bases de datos relacionales
Hibernate
Se obtiene de
http://www.hibernate.org
17/06/2012
Hibernate
Las bibliotecas ms importantes son
zip/lib/required/*.jar
Ejemplo
Se trabajar con un ejemplo de mapeo entre una clase y una tabla
Alumno
Alumno
POO
Hibernate
MySQL
La base de datos
Contiene una sola tabla
Alumno
Matricula: int(10) (id) Nombre: varchar(100) Edad: int(2) Carrera: varchar(3)
17/06/2012
Ambiente OO
Una sola clase para el mapeo
Alumno
Estado Matricula: int Nombre: String Edad: int Carrera: String Comportamiento Setters y getters Se necesita un constructor vaco
Hibernate
El mapeo se realiza por medio de metadatos descritos en un archivo XML Dos elementos
Descripcin del ORM Descripcin de la conexin a la base de datos y elementos que la conforman
17/06/2012
Archivo
NombreClase.hbm.xml
Encabezado
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration3.0.dtd">
10
17/06/2012
Elemento raiz
<hibernate-mapping> </hibernate-mapping>
Atributos de <class>
name: el nombre calificado de la clase
11
17/06/2012
El identificador
Define
El nombre de la propiedad en el estado El tipo de la propiedad en el estado El nombre de la columna en la tabla <id name=.. type= column=.. />
Tipos de datos
http://docs.jboss.org/hibernate/orm/4.1/devguide/enUS/html_single/#d5e2280
12
17/06/2012
Metadatos de la conexin
Introduccin a Hibernate
Archivo
hibernate.cfg.xml
La conexin
Encabezado
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration3.0.dtd">
13
17/06/2012
Elemento raiz
<hibernate-configuration> </hibernate-configuration>
SessionFactory
Ayudar a crear la conexin y a administrar el mapeo <session-factory> </session-factory>
Propiedades de la conexin
1. 2. 3. 4.
14
17/06/2012
Metadatos de ORM
Especifican las rutas de los archivos XML en los que se encuentran las especificaciones de ORM <mapping resource=archivo.xml"/>
El programa
Introduccin a Hibernate
15
17/06/2012
El programa
Para juntar estos dos mundos se debe
Conectarse a la base de datos Realizar el mapeo inicial Cargar objetos en memoria Hacer los mapeos necesarios segn la aplicacin
Persistencia
La persistencia se hace por medio de objetos Session que manejan transacciones
16
17/06/2012
Transacciones
session.beginTransaction(); session.getTransaction().commit();
Altas
Alumno a = new Alumno(); a.setMatricula("11111"); a.setNombre("Primer alumno"); a.setEdad(20); a.setCarrera("ITC"); session.save(a);
Bajas
session.delete(a)
17
17/06/2012
Cambios
Alumno al = session.get(Alumno.class,11111);
18
17/06/2012
from Alumno
HQL
Lenguaje de consultas de Hibernate Permite la consulta sobre un conjunto de objetos. http://docs.jboss.org/hibernate/orm/4.1/devguide/enUS/html_single/#d5e1033
Hibernate y NetBeans
Introduccin a Hibernate
Fcil pero no
Para mapear una base de datos completa se necesita
Crear las clases para cada tabla/relacin Crear archivos de metadatos para el ORM Cuidar los elementos relacionados
Cmo se representan las relaciones?
19
17/06/2012
Generalmente
Generalmente
Si esto se tiene, se puede automatizar el proceso de creacin de objetos y archivos de metadatos con NetBeans.
Proceso
Crear conexin a base de datos como servicio Hibernate configuration wizzard Hibernate reverse engineering wizzard Hibernate mapping files and POJOs from database wizzard
20
17/06/2012
Crea un archivo de configuraciones que indicar para qu tablas de la base de datos se crearn los archivos de configuracin.
Crea, finalmente, los archivos de metadatos y las clases con base en las tablas y las relaciones encontradas en el modelo relacional.
21
17/06/2012
Para esto
Se debe tener mucho cuidado en el diseo de la base de datos para que el ORM sea correcto.
Dudas
22