8

Click here to load reader

Usando Hibernate

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

Page 1: Usando Hibernate

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

Page 2: Usando Hibernate

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

Page 3: Usando Hibernate

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.

Page 4: Usando Hibernate

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

Page 5: Usando Hibernate

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

Page 6: Usando 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,

Page 7: Usando Hibernate

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.