Click here to load reader
Upload
alexander-montana
View
217
Download
1
Embed Size (px)
DESCRIPTION
Este documento tiene como propósito dar una mirada al framework de persistencia en java Hibernate en el desarrollo de un proyecto de software usando Netbeans 5.0.1 como IDE.
Citation preview
1
IMPLEMENTACION DE HIBERNATE EN UN PROYECTO DE SOTWARE
Alexander Montaña Bello
Resumen: En el proceso de desarrollo de sistemas de información empresarial requiere
dedicar un momento para decidir cómo se va a administrar la persistencia de datos, en
ocasiones se opta por usar patrones DAO, caso en el cual el desarrollador debe codificar
tanto las clases de conexión como los BEAN y las clases de control que contienen las
sentencias SQL en función del motor de bases de datos ya que cada motor contiene su
dialecto SQL propio y en muchas ocasiones no completamente idéntico al de otros SGBD,
se puede optar por usar un framework de desarrollo especializado en el manejo de
persistencia, lo que evita la codificación de una gran cantidad de código ya que el
framework lo genera con facilidad para el usuario. Este documento tiene como propósito
dar una mirada al framework de persistencia en java Hibernate en el desarrollo de un
proyecto de software usando Netbeans 5.0.1 como IDE.
Palabras clave: frameworks, software, persistencia de datos
Abstract: In the process of developing enterprise information systems is very important to
dispose a moment to decide how to manage the data persistence, sometimes are used DAO
patterns , in that case the developer must encode all the classes: connection classes,
BEAN and control classes. The control classes contain the SQL sentences definition
according to the Database manager System, that has its own dialect and more times
different from others ones. Another option is to use a development specialized framework
2
to manage the data access, that avoids the coding of big quantity of code because the
framework generates it automatically. This document pretends to look over Hibernate java
persistence framework in a developing a software project using Netbeans 5.5.1 as IDE.
Keywords: frameworks, software, data persistence
INTRODUCCIÓN
El presente documento surge durante el
desarrollo de un sistema informático para
el Centro Médico Deportivo del Oriente
Colombiano por parte de varios
estudiantes de la Escuela de Ingeniería de
Sistemas de La Universidad Pedagógica y
Tecnológica de Colombia; el proyecto
comprende el desarrollo de una aplicación
web a tres capas, desarrollado en lenguaje
java, que se ajuste con gran facilidad a
cualquier manejador de bases de datos.
Para el desarrollo del proyecto se
selecciona Netbeans 5.5.1 como Entorno
Integrado de desarrollo y PostgreSQL 8.1
para la gestión de los datos, y se emplea
Hibernate como framework de
persistencia de datos.
Se requiere para implementar hibernate
al desarrollo en Netbeans la instalación de
un complemento del IDE en lo tocante al
framework, ese complemento se llama
XDoclet; una vez se tiene instalado y
configurado el XDoclet se pueden crear
las clases necesarias para el manejo de la
persistencia de una forma fácil y flexible
ya que otorga la facilidad de cambiar de
SGBD con la sencillez de modificar un
fichero XML de configuración, aunado a
esto el empleo de un framework como
Hibernate permite abstraer un modelo de
la naturaleza de las bases de datos a uno
correspondiente en objetos propio de los
lenguajes de programación orientado a
objetos como java.
1. PERSISTENCIA DE DATOS
Un momento clave del proyecto es
responder a la presunta ¿Cómo se va a
3
administrar el acceso a los datos de la
aplicación? El manejo de la persistencia
se puede realizar de varias maneras como
son JDBC, iBatis, ORM‟s, EJB, EJB 3,
JPA, entre otras.
1.1. JDBC
Es una interfaz de acceso a bases de
datos, requiere la definición de objetos
DAO y Control, estas últimas contienen
el código SQL de las consultas,
inserciones, supresiones de datos y las
rutinas necesarias para manipular los
datos de la Base. Presenta algunos
inconvenientes en cuanto a que el código
de manipulación de los datos es propio
del SGBD y en casos diferente de otros,
por lo que una cambio de SGBD implica
muchos cambios en la aplicación,
adicionalmente en programador además
del lenguaje en la codificación de la
aplicación debe conocer y manejar el
lenguaje SQL, finalmente el código se
torna repetitivo para cada objeto del
modelo.
1.2. iBatis
iBatis no se considera un ORM puro ya
que con él aún se debe escribir las
sentencias SQL y el mapeo lo realiza en
función de los resultados obtenidos con la
ejecución de la sentencia. iBatis
comprende las capas de abstracción del
acceso a los datos a la que denomina capa
DAO y los mapas SQL que realiza un
mapeo entre los JavaBeans y SQL,
cuando se obtiene el resultado de la
consulta SQL iBatis genera un fichero
XML que permite reflejar en objetos
dicho resultado. iBatis es fácil de usar,
ofrece un control total en las sentencias
SQL, permite un mapeo directamente a
un xml, es facilmente configurable, pero
exige del programador conocimientos del
SQL, además ofrece baja portabilidad.
4
1.3. Herramientas ORM
Las herramientas de Mapeo Objeto
Relacional en esencia hacen una
abstracción del modelo relacional a un
modelo de objetos que es lo que se usa en
el lenguaje de programación java.
Aquí es donde se usa XDoclet que es una
herramienta de generación de ficheros
XML a partir de ciertas marcas.
Los ORM proporciona un mapeo
objeto/relacional, de entidades a objetos
lo que reduce casi en un 30% el código a
cargo del desarrollador.
2. HIBERNATE
Hibernate es un framework de
persistencia que se tuvo sus inicios en el
año 2001 y hoy se ha convertido en una
herramienta que ofrece una solución
completa para el problema del manejo de
persistencia en java puntualmente aunque
para la tecnología .NET existe su
homologo NHibernate, su principal
promotor Gaving King en compañía de
Christian Bauer han escrito varios libros
de referencia de Hibernate como es el
caso de los citados en este documento;
por la comunidad tan amplia y activa que
tiene entorno existe mucha información y
muy buen soporte, de modo que se ha
convertido en la herramienta opensource
más completa para el manejo de
persistencia de datos para sistemas J2EE
y J2SE.
El concepto de persistencia consiste en el
almacenamiento de datos en una Base de
datos relacional a través de SQL[1].
Hibernate genera una imagen en términos
de objetos de una tabla de la base de
datos, genera un fichero XML que enlaza
los dos modelos (el objetual y el
relacional).
Las consultas que se quieran realizar no
se diseñan en lenguaje SQL sino en HQL
un lenguaje de consulta personalizado de
Hibernate que por supuesto es objetual y
que el framework se encarga de llevarlo
5
al dialecto SQL apropiado según el
SGBD.
Una sentencia SQL para guardar un
registro en una tabla tpersona seria algo
parecido a: INSERT INTO tpersona
VALUES(„alexander‟, „montaña‟).
La misma sentencia en HQL seria
sesión.save(persona), donde persona es
una instancia de la clase que es imagen de
la tabla tpersona; aparentemente ha
desaparecido el código SQL pero no es
así, simplemente Hibernate para ejecutar
la sentencia revisa el archivo de
configuración de Hibernate que es el
Hibernate.properties que es el archivo que
mantiene los datos mínimos para
establecer una conexión con el SGBD
como son la URL, el driver de conexión,
el usuario y la contraseña. Con estos
datos establece la conexión y obtiene una
sesión a través de la cual puede
comunicar la aplicación con el SGBD. La
tabla tpersona debe tener su abstracción
en lenguaje objetual que es un BEAN que
tiene por cada atributo de la tabla una
propiedad en la clase, sus respectivos
métodos de acceso y unas marcas que va
generando el XDoclet donde queda
expreso que tipo de dato tiene una
propiedad en su correspondiente atributo
de la base de datos entre otros dato.
En la anterior figura se puede observar
que el BEAN Persona su imagen en la
base de datos en la tabla PERSONA(1er
bloque de comentarios) y el recuadro
corresponde a la propiedad nombres en la
clase que es de tipo String y está sujeto al
atributo nombres de la tabla cuyo tipo de
dato es varchar(25) y que no acepta
valores nulos. Con La información que
contiene la clase Persona Hibernate
6
genera un archivo XML que establece la
relación entre ambas abstracciones y que
se denomina Persona.hbm.xml algo
similar a lo siguiente
Hibernate genera un archivo llamado
HibernateUtil que permite con base en su
archivo de propiedades de configuración
(hibernate.properties) crear, obtener y
cerrar sesiones con la base de datos a
través de un objeto sessionFactory. Para
cada BEAN se debe generar un archivo
denominado <nombre_del_Bean>Facade
que contiene la definición de las consultas
y transacciones con la base de datos.
Las transacciones están en lenguaje
objetual, si es una consulta cuyo resultado
sería un único registro o muchos de ellos
no retorna un resultSet como se esperaría
vía JDBC sino un objeto Persona para el
primer caso o un List de objetos Persona
con los datos correspondientes, por lo que
se obtiene con Hibernate un objeto
limpio, al cual no hay que depurarlo ni
formarlo.
De este modo en la aplicación no hay
lenguaje SQL sino objetual y es
responsabilidad de Hibernate poner cada
sentencia en el dialecto apropiado,
Hibernate soporta los siguientes dialectos:
DB2, MySQL, SAP DB, Oracle, Ingres,
Sybase, Postgress, Mackoi SQL,
Interbase, Pointbase, PostgreSQL,
7
HipersonicSQL, Microsoft SQL Server,
Informix y FrontBase.
Estas tareas están automatizadas en
entornos de desarrollo como Netbeans al
instalarse el plugin nbXDoclet y existe un
wizard muy amigable para generar
consultas en HQL.
Para instalar Hibernate se debe descargar
las librerías necesarias [2], descargar el
complemento de XDoclet para
Netbeans[3] instalar según el
complemento desde el IDE y asociarle las
librerías de Hibernate, durante este
proceso descarga las librerías necesarias
para hacer “hablar” a Hibernate con el
SGBD.
Una vez se tiene instalado y configurado
se puede crear el BEAN, el HibernateUtil
y el FACADE correspondiente
pudiéndose usar la herramienta y
aprovechar todas sus capacidades.
CONCLUSIONES
Existe bastante información en cuanto a
Hibernate como estructura de soporte
para el manejo de persistencia de datos en
java pero poca en cuanto a la
implementación concreta en un entorno
integrado de desarrollo.
En proyectos empresariales el tiempo es
vital por lo que es importante restarle el
tiempo invertido en las tareas repetitivas
y dejar que la maquina las haga de forma
automática.
La mejor opción para el manejo de
persistencia depende del tipo de proyecto,
la capacitación y experiencia de los
integrantes del equipo desarrollo, el
tamaño del proyecto, el grado de madurez
de la herramienta y la cantidad y calidad
de la documentación de la misma.
REFERENCIAS BIBLIOGRAFICAS
[1] BAUER, Christian y KING, Gavin. Java persistence with hibernate. United States of America, ed. Manning Publication Co. 2007. P. 5.
8
[2] http://www.hibernate.org/6.html
[3]http://sourceforge.net/project/downloading.php?groupname=nbxdoclet&filename=sf-netbeans-nbxdoclet-update-0.5.nbm&use_mirror=ufpr
BAUER, Christian y KING, Gavin. Hibernate in action. United States of America, ed. Manning Publication Co. 2005.