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 1
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 Se requiere para implementar hibernate INTRODUCCIÓN
al desarrollo en Netbeans la instalación de
El presente documento surge durante el
un complemento del IDE en lo tocante al
desarrollo de un sistema informático para
framework, ese complemento se llama
el Centro Médico Deportivo del Oriente
XDoclet; una vez se tiene instalado y
Colombiano
varios
configurado el XDoclet se pueden crear
estudiantes de la Escuela de Ingeniería de
las clases necesarias para el manejo de la
Sistemas de La Universidad Pedagógica y
persistencia de una forma fácil y flexible
Tecnológica
de Colombia; el proyecto
ya que otorga la facilidad de cambiar de
comprende el desarrollo de una aplicación
SGBD con la sencillez de modificar un
web a tres capas, desarrollado en lenguaje
fichero XML de configuración, aunado a
java, que se ajuste con gran facilidad a
esto el empleo de un framework como
cualquier manejador de bases de datos.
Hibernate permite abstraer un modelo de
Para el desarrollo del proyecto se
la naturaleza de las bases de datos a uno
selecciona Netbeans 5.5.1 como Entorno
correspondiente en objetos propio de los
Integrado de desarrollo y PostgreSQL 8.1
lenguajes de programación orientado a
para la gestión de los datos, y se emplea
objetos como java.
Hibernate
1. PERSISTENCIA DE DATOS
por
como
parte
de
framework
de
persistencia de datos.
Un momento clave del proyecto es responder a la presunta ¿Cómo se va a 2
administrar el acceso a los datos de la
torna repetitivo para cada objeto del
aplicación? El manejo de la persistencia
modelo.
se puede realizar de varias maneras como
1.2. iBatis
son JDBC, iBatis, ORM‟s, EJB, EJB 3,
iBatis no se considera un ORM puro ya
JPA, entre otras.
que con él aún se debe escribir las sentencias SQL y el mapeo lo realiza en
1.1. JDBC
función de los resultados obtenidos con la
Es una interfaz de acceso a bases de
ejecución
datos, requiere la definición de objetos
comprende las capas de abstracción del
DAO y Control, estas últimas contienen
acceso a los datos a la que denomina capa
el
consultas,
DAO y los mapas SQL que realiza un
inserciones, supresiones de datos y las
mapeo entre los JavaBeans y SQL,
rutinas necesarias para manipular los
cuando se obtiene el resultado de la
datos de la Base. Presenta algunos
consulta SQL iBatis genera un fichero
inconvenientes en cuanto a que el código
XML que permite reflejar en objetos
de manipulación de los datos es propio
dicho resultado. iBatis es fácil de usar,
del SGBD y en casos diferente de otros,
ofrece un control total en las sentencias
por lo que una cambio de SGBD implica
SQL, permite un mapeo directamente a
muchos
aplicación,
un xml, es facilmente configurable, pero
adicionalmente en programador además
exige del programador conocimientos del
del lenguaje en la codificación de la
SQL, además ofrece baja portabilidad.
código
SQL
cambios
de
en
las
la
aplicación debe conocer y manejar el lenguaje SQL, finalmente el código se
3
de
la
sentencia.
iBatis
1.3. Herramientas ORM
Christian Bauer han escrito varios libros
Las herramientas de Mapeo Objeto
de referencia de Hibernate como es el
Relacional
una
caso de los citados en este documento;
abstracción del modelo relacional a un
por la comunidad tan amplia y activa que
modelo de objetos que es lo que se usa en
tiene entorno existe mucha información y
el lenguaje de programación java.
muy buen soporte, de modo que se ha
Aquí es donde se usa XDoclet que es una
convertido en la herramienta opensource
herramienta de generación de ficheros
más
XML a partir de ciertas marcas.
persistencia de datos para sistemas J2EE
Los
en
ORM
esencia
hacen
proporciona
un
mapeo
completa
para
el
manejo
de
y J2SE.
objeto/relacional, de entidades a objetos
El concepto de persistencia consiste en el
lo que reduce casi en un 30% el código a
almacenamiento de datos en una Base de
cargo del desarrollador.
datos relacional a través de SQL[1]. Hibernate genera una imagen en términos de objetos de una tabla de la base de
2. HIBERNATE Hibernate
es
un
de
datos, genera un fichero XML que enlaza
persistencia que se tuvo sus inicios en el
los dos modelos (el objetual y el
año 2001 y hoy se ha convertido en una
relacional).
herramienta que ofrece una solución
Las consultas que se quieran realizar no
completa para el problema del manejo de
se diseñan en lenguaje SQL sino en HQL
persistencia en java puntualmente aunque
un lenguaje de consulta personalizado de
para la tecnología .NET existe su
Hibernate que por supuesto es objetual y
homologo
que el framework se encarga de llevarlo
NHibernate,
framework
su
principal
promotor Gaving King en compañía de 4
al dialecto SQL apropiado según el
tiene por cada atributo de la tabla una
SGBD.
propiedad en la clase, sus respectivos
Una sentencia SQL para guardar un
métodos de acceso y unas marcas que va
registro en una tabla tpersona seria algo
generando el XDoclet donde queda
parecido a: INSERT INTO tpersona
expreso que tipo de dato tiene una
VALUES(„alexander‟, „montaña‟).
propiedad en su correspondiente atributo
La misma sentencia en HQL seria
de la base de datos entre otros dato.
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
En la anterior figura se puede observar
mantiene
para
que el BEAN Persona su imagen en la
establecer una conexión con el SGBD
base de datos en la tabla PERSONA(1er
como son la URL, el driver de conexión,
bloque de comentarios) y el recuadro
el usuario y la contraseña. Con estos
corresponde a la propiedad nombres en la
datos establece la conexión y obtiene una
clase que es de tipo String y está sujeto al
sesión a través de la cual puede
atributo nombres de la tabla cuyo tipo de
comunicar la aplicación con el SGBD. La
dato es varchar(25) y que no acepta
tabla tpersona debe tener su abstracción
valores nulos. Con La información que
en lenguaje objetual que es un BEAN que
contiene la clase Persona Hibernate
los
datos
mínimos
5
genera un archivo XML que establece la
sería un único registro o muchos de ellos
relación entre ambas abstracciones y que
no retorna un resultSet como se esperaría
se
vía JDBC sino un objeto Persona para el
denomina
Persona.hbm.xml
algo
similar a lo siguiente
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.
Hibernate genera un archivo llamado HibernateUtil que permite con base en su archivo de propiedades de configuración
De este modo en la aplicación no hay
(hibernate.properties) crear, obtener y
lenguaje
cerrar sesiones con la base de datos a
SQL
sino
objetual
y
es
responsabilidad de Hibernate poner cada
través de un objeto sessionFactory. Para
sentencia
cada BEAN se debe generar un archivo
en
el
dialecto
apropiado,
Hibernate soporta los siguientes dialectos:
denominado <nombre_del_Bean>Facade
DB2, MySQL, SAP DB, Oracle, Ingres,
que contiene la definición de las consultas
Sybase,
y transacciones con la base de datos.
Interbase,
Las transacciones están en lenguaje objetual, si es una consulta cuyo resultado 6
Postgress, Pointbase,
Mackoi
SQL,
PostgreSQL,
HipersonicSQL, Microsoft SQL Server,
CONCLUSIONES
Informix y FrontBase.
Existe bastante información en cuanto a
Estas tareas están automatizadas en
Hibernate como estructura de soporte
entornos de desarrollo como Netbeans al
para el manejo de persistencia de datos en
instalarse el plugin nbXDoclet y existe un
java
wizard
implementación concreta en un entorno
muy amigable
para
generar
pero
poca
en
cuanto
a
la
consultas en HQL.
integrado de desarrollo.
Para instalar Hibernate se debe descargar
En proyectos empresariales el tiempo es
las librerías necesarias [2], descargar el
vital por lo que es importante restarle el
complemento
para
tiempo invertido en las tareas repetitivas
el
y dejar que la maquina las haga de forma
Netbeans[3]
de
XDoclet
instalar
según
complemento desde el IDE y asociarle las
automática.
librerías de Hibernate, durante este
La mejor opción para el manejo de
proceso descarga las librerías necesarias
persistencia depende del tipo de proyecto,
para hacer “hablar” a Hibernate con el
la capacitación y experiencia
SGBD.
integrantes del equipo desarrollo, el
Una vez se tiene instalado y configurado
tamaño del proyecto, el grado de madurez
se puede crear el BEAN, el HibernateUtil
de la herramienta y la cantidad y calidad
y
de la documentación de la misma.
el
pudiéndose
FACADE usar
la
correspondiente herramienta
de los
y
aprovechar todas sus capacidades.
REFERENCIAS BIBLIOGRAFICAS [1] BAUER, Christian y KING, Gavin. Java persistence with hibernate. United States of America, ed. Manning Publication Co. 2007. P. 5.
7
[2] http://www.hibernate.org/6.html
[3]http://sourceforge.net/project/downl oading.php?groupname=nbxdoclet&filen ame=sf-netbeans-nbxdoclet-update0.5.nbm&use_mirror=ufpr BAUER, Christian y KING, Gavin. Hibernate in action. United States of America, ed. Manning Publication Co. 2005.
8