Professional Documents
Culture Documents
IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
Arquitectura
Para la elaboracin de la arquitectura se debern crear una serie de capas las cuales de
ejemplifican en el siguiente grfico.
Modelo
Domain
DAO
Hibernate
BL
Controlador
View
Controller
Creacin de la base de datos
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
Para el laboratorio deber crear la siguiente base de datos (esta se encuentra en el sitio del
grupo)
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
La figura anterior representa el modelo de la base de datos, por lo que se deber aplicarla en el
servidor MySQL utilizando la opcin Forward Engineer
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
Los parmetros inicialmente son los datos de conexin de la base de datos (Nota: verifique que
los servicios del servidor MySQL se estn ejecutando).
Indique la contrasea de la base de datos (si el usuario no tiene contrasea, el proceso no la
solicitar)
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
Al finalizar el proceso deber ver la siguiente pantalla en donde todo deber tener el check
en verde, as el log de mensajes de error no deber aparecer.
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
Creacin de la conexin a la base de datos desde NetBeans
Inicialmente deber configurar la conexin a la base de datos en NetBeans por lo deber ir a la
pestaa de Services (si esta oculta, podr mostrarla en la opcin Window->Services), en la
cual se muestran los diferentes servicios relacionados al IDE, en los siguientes paso se muestra
como crear esta conexin:
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
Debe dar clic derecho sobre la opcin Databases y en el men contextual deber seleccionar
la opcin New Connection
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
En la siguiente pantalla de configuracin de la conexin deber seleccionar el driver de la base
de datos (NetBean tiene algunos Drivers nativos, si no lo encuentra en la el listBox deber
instalarlo en el IDE), para lo que deber seleccionar el driver correspondiente y dar clic en la
opcin Next.
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
Despus, deber indicar los datos de conexin:
Host
Puerto
Base de datos
Usuario
Contrasea
Y dar clic en la opcin Test Connection para verificar que la conexin a la base de datos se
esta realzando correctamente.
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
En la siguiente pantalla se deber dar la opcin Finish, para finalizar la configuracin de la
conexin en NetBeans.
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
Al finalizar la accin, en servicios se podr observar la conexin creada, as como explorar desde
NetBeans las bases de datos con sus respectivas tablas y campos.
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
1
Hibernate es una herramienta de Mapeo objeto-relacional (ORM) para la plataforma Java (y
disponible tambin para .Net con el nombre de NHibernate) que facilita el mapeo de atributos
entre una base de datos relacional tradicional y el modelo de objetos de una aplicacin, mediante
archivos declarativos (XML) o anotaciones en los beans de las entidades que permiten establecer
estas relaciones.
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
Despus, deber buscar la librera Hibernate 4.3.x y dar clic en la opcin Add Library.
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
Lo mismo deber realizar con el driver de conexin de MySQL, realizando el mismo proceso
pero incluyendo la librera MySQL JDBC Driver.
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
Al finalizar la inclusin de las libreras, deber verse de la siguiente manera la carpeta de
libreras del proyecto creado para este laboratorio.
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
Posteriormente, deber seleccionar la categora Hibernate y en el tipo de archivo seleccionar
la opcin Hibernate Configuration Wizard y dar clic en el botn Next.
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
Luego deber indicar el nombre del archivo de configuracin, que para efectos de laboratorio
deber llamarse hibernate.cfg.
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
En la siguiente pantalla deber seleccionar la conexin a la base de datos creada en Netbeans
(uno de los primeros para del presente documento) e indicar el dialecto, recuerdo que
Hibernate es un framework de persistencia de bases de datos, por lo que deber indicar a cual
base de datos se va a conectar, ya que el framework implementar el SQL correspondiente de
una base de datos u otra.
Despus de la creacin de este archivo el proyecto deber mostrarse de la siguiente manera, el
archivo hibernate.cfg.xml en <default package>
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
Y el archivo deber contener la siguiente informacin, denote, que los datos que posee el
archivo son los necesarios para realizar la conecin a la base de datos deseada.
El siguiente archivo a crea es el Hibernate Reverse Engenieering Wizard, el cual servir para
aplicar ingeniera reversa a partir de la base de datos, es decir, generar los archivos (clases y
xml) segn lo que posea la base de datos en cuestin.
Para lo que deber dar clic derecho en Source Package y en el men contextual seleccionar la
opcin New->Other
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
En la pantalla que se muestra a continuacin deber seleccionar la categora Hibernate y el
archivo Hibernate Reverse Engenieering Wizard.
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
Posteriormente, netBeans solicitar el nombre de archivo de configuracin, que para efectos
del laboratorio se llamar como lo indica netbeans por defecto hibernate.reveng.
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
En la siguiente pantalla Netbeans, le solicitar seleccionar las tablas a las cuales desea aplicarle
la ingeniera reversa (Nota: estos datos de la base de datos son mostrados con los datos de
conexin que se indicaron el en el archivo anterior, si las tablas no aparasen verifique que estos
datos sean los correctos en el archivo hibernate.cfg.xml)
De estar todo correcto se debe proceder a incluir las tablas necesarios. Add All para efectos
del laboratorio.
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
En el archivo creado deber tener la siguiente informacin.
Para el laboratorio deber crear los siguientes paquetes:
cr.ac.una.prograiv.agenda.dao
o Objetos de acceso a la base de datos
cr.ac.una.prograiv.agenda.domain
o Archivos POJO (clases planas en java) y los archivos de mapeo con la base de
datos por la utilizacin de hibernate
cr.ac.una.prograiv.agenda.test
o Capa para crear las clases de prueba
cr.ac.una.prograiv.agenda.utils
o Objetos utilitarios del proyecto
Nota
Para la creacin de los paquetes se va utilizara un estndar utilizado para nombrarlos, para lo
que se debe incluir el dominio de la empresa o institucin en la que se desarrollar la aplicacin:
cr.ac.una.prograIV.app.vista
Dominio de la empresa
o institucin
Nombre
departamento o curso
Nombre aplicacin
Capa de aplicacin
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
Para lo que deber dar clic en Source Package y crear los paquetes indicados anteriormente.
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
2
La SessionFactory es aquella que se encarga indicarle al sistema, donde se encuentran todos
los ficheros de mapeo de Hibernate y de configuracin.
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
Esta clase deber contener el siguiente cdigo:
Mtodos a atributos para poder acceder al sessionfactory
Un mtodo para iniciar cada operacin con la base de datos, ntese que en este mtodo
se obtiene el sessionfactory y se inicia una transaccin3 en la base de datos.
Un mtodo para controlar los errores en las transacciones que se realicen en la base de
datos, en caso de fallo, se realiza un rollBack, lo que regresa la base de datos a su estado
original antes del inicio de la transaccin.
3
Un SGBD se dice transaccional, si es capaz de mantener la integridad de los datos, haciendo
que estas transacciones no puedan finalizar en un estado intermedio. Cuando por alguna causa
el sistema debe cancelar la transaccin, empieza a deshacer las rdenes ejecutadas hasta dejar
la base de datos en su estado inicial (llamado punto de integridad), como si la orden de la
transaccin nunca se hubiese realizado.
Generacin del mapeo de la base de datos
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
Una de las caractersticas de Hibernate es realizar un mapeo de la base de datos y crear los
objetos en java relacionados a cada tabla existente en esta, por lo que se dice que con
hibernate se programa con una base de datos de objetos.
Para poder realizar el mapeo de la base de datos, deber dar clic en el paquete domain, y en
men contextual deber seleccionar la opcin New->Other..
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
Luego, seleccionar la categora Hibernate y el archivo Hibernate Mapping Files and POJOs
from Data Base
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
Finalmente deber seleccionar la opcin JDK 5 Language Features para que genere las clases
con las especificaciones del JDK5.
Nota: note que el wizard busca los archivos de configuracin creados anteriormente
(hibernate.cfg.xml y hibernate.reveng.xml) si estos estn mal configurados la accin no se
podr realizar con xito.
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
Una vez generado el mapeo de la base de datos, podr observar en el paquete domain, las
clases con sus receptivos mapeos haciendo referencia a la base de datos en cuestin.
Creacin del paquete DAO
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
En el paquete DAO, existirn todos los objetos que tienen acceso a la base de datos, como
todos los objetos tiene el mismo comportamiento se proceder a la creacin de una interfaz
que ser implementada en cada una de las clases DAO gestionen la informacin de la base de
datos.
Para esto deber dar clic derecho sobre el paquete DAO, y crear la interfaz IBaseDAO, la cual
utiliza Java Generics4 para su desarrollo
4
Uso de java generics http://goo.gl/H7OsQS
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
Posteriormente deber implementar las clases DAO para cada una de la tablas de la base de
datos, heredando de la clase HibernateUtil e implementando la interfaz IBaseDAO.
Con los siguientes mtodos:
1. Save: Guarda el objeto en la base de datos.
2. Merge: Verifica el objeto con el registro de la tabla, las diferencias en los atributos del
objeto los aplica en la base de datos (update).
3. Delete: Borra el objeto de la base de datos.
4. findById: Busca un objeto por el identificador en la base de datos y lo retorna.
5. findAll: retorna todos los objetos de la base de datos utilizando el HQL5 como lenguaje
de consulta navito utilizado por hibernate.
SAVE
5
Tutorial de HQL: http://goo.gl/mKA4sS
MERGE
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
DELETE
FINDBYID
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
FINDALL
Al finalizar se deber crear una clase prueba en donde se ejecuten los diferentes mtodos para
verificar su correcto funcionamiento.
Programacin IV
Laboratorio de la capa DAO
Prof: Lic. Cristhian Garita Fonseca
Al finalizar este laboratorio el proyecto deber tener la siguiente estructura de proyecto