Uso Del Framework Hibernate Con Netbeans

15
Programación Orientada a Objetos 2009– Fac de Ingeniería – UNJu Clase 1 de Hibernate Ariel Alejandro Vega. Prof. Adjunto 1 USO DEL FRAMEWORK HIBERNATE CON NETBEANS Hibernate es un Framework que permite el mapeo de tablas de base de datos relacionales con clases definidas en java. De tal forma que cuando hacemos una operación de guardar, modificar, eliminar o consultar el estado de uno o varios objetos, él se encarga de generar las sentencias SQL de forma transparente al programador. Por otro lado este framework requiere cierta configuración para usarlo. En general hay una tendencia a usarlo en la programación Java Web (J2EE) sin embargo se puede aplicar sin ningún inconveniente en Java Desktop (J2SE aplicado a Swing). Más aún usando Netbeans la configuración resulta muy fácil de realizar, ya que le mismo IDE puede ayudarnos en todo el proceso del mapeo objeto – relacional. En esta ayuda lo que haremos es usar configurar y usar Hibernate para el mapeo de la Clase Persona vista en ayudas anteriores. Paso 1 : Creamos un nuevo proyecto. Lo llamaremos Apu San Pedro1. Luego haremos iremos a sus propiedades (botón derecho sobre el nombre del proyecto, opción Propiedades) y Agregaremos la biblioteca del Hibernate. Nota: Podemos realizar esta operación sobre el proyecto apu san pedro. Yo lo hago en un nuevo proyecto para que quede más claro. 1 2 3

description

Programacion Orientada a Objetos

Transcript of Uso Del Framework Hibernate Con Netbeans

Page 1: Uso Del Framework Hibernate Con Netbeans

Programación Orientada a Objetos 2009– Fac de Ingeniería – UNJu Clase 1 de Hibernate

Ariel Alejandro Vega. Prof. Adjunto 1

USO DEL FRAMEWORK HIBERNATE CON NETBEANS

Hibernate es un Framework que permite el mapeo de tablas de base de datos relacionales con clases

definidas en java. De tal forma que cuando hacemos una operación de guardar, modificar, eliminar o

consultar el estado de uno o varios objetos, él se encarga de generar las sentencias SQL de forma

transparente al programador.

Por otro lado este framework requiere cierta configuración para usarlo. En general hay una tendencia a

usarlo en la programación Java Web (J2EE) sin embargo se puede aplicar sin ningún inconveniente en

Java Desktop (J2SE aplicado a Swing).

Más aún usando Netbeans la configuración resulta muy fácil de realizar, ya que le mismo IDE puede

ayudarnos en todo el proceso del mapeo objeto – relacional.

En esta ayuda lo que haremos es usar configurar y usar Hibernate para el mapeo de la Clase Persona

vista en ayudas anteriores.

Paso 1: Creamos un nuevo proyecto. Lo llamaremos Apu San Pedro1. Luego haremos iremos a sus

propiedades (botón derecho sobre el nombre del proyecto, opción Propiedades) y Agregaremos la

biblioteca del Hibernate.

Nota: Podemos realizar esta operación sobre el proyecto apu san pedro. Yo lo hago en un nuevo

proyecto para que quede más claro.

1

2

3

Page 2: Uso Del Framework Hibernate Con Netbeans

Programación Orientada a Objetos 2009– Fac de Ingeniería – UNJu Clase 1 de Hibernate

Ariel Alejandro Vega. Prof. Adjunto 2

Paso 2: Ahora agregamos el driver de la base de datos. En nuestro caso es Oracle.Para ello procedemos

exactamente igual que en el paso anterior, salvo que en vez de seleccionar Add Library… se elige Add

JAR/Folder y se ubica en el explorador la ruta en la cual se halla el driver.

Debería quedar la sección Libraries conformada como lo representa la siguiente pantalla

1

2

3

Page 3: Uso Del Framework Hibernate Con Netbeans

Programación Orientada a Objetos 2009– Fac de Ingeniería – UNJu Clase 1 de Hibernate

Ariel Alejandro Vega. Prof. Adjunto 3

Es decir se ve que están agregados el conjunto de archivos de hibérnate y el driver JDBC de Oracle

Paso 3: Configurar la gestión del acceso a la base de datos para que lo realice Hibernate

En clases anteriores vimos que podíamos gestionar el acceso a base de datos usando una Clase java

(Conexión.java) en la cual registrábamos el driver y luego configurábamos como conectarnos a la base

de datos.

Usando NetBeans para hibernate esta operación la podemos realizar mediante un asistente.

Primero para seguir respetando el Patrón DAO creamos el paquete dao de tal forma que la organización

quede así

Luego seleccionamos el paquete dao, hacemos botón derecho, elegimos la opción nuevo y por último la

sub opción otro.

Page 4: Uso Del Framework Hibernate Con Netbeans

Programación Orientada a Objetos 2009– Fac de Ingeniería – UNJu Clase 1 de Hibernate

Ariel Alejandro Vega. Prof. Adjunto 4

Con lo cual se abrirá esta pantalla, en la cual elegimos la categoría hibernate y luego elegimos crear un

Hibernate Configuration File

Luego pasamos a la siguiente pantalla, donde nos pide que coloquemos un nombre, en general se suele

dejar el nombre por defecto (hibernate.cfg) al menos que estemos trabajando con varias bases de

datos, entonces podríamos indicar a que base de datos corresponde cada archivo de configuración. Por

lo tanto para este caso lo que hacemos es saltar a la siguiente pantalla, en la cual debemos elegir una

conexión a base de datos. Si ya existe, solo debemos seleccionarla, sino elegimos crear una nueva, tal

como lo muestra la siguiente pantalla

1

2

Page 5: Uso Del Framework Hibernate Con Netbeans

Programación Orientada a Objetos 2009– Fac de Ingeniería – UNJu Clase 1 de Hibernate

Ariel Alejandro Vega. Prof. Adjunto 5

Al hacer esto aparece la siguiente pantalla, la cual completamos de tal forma que quede como se ve en

la siguiente pantalla

Estos datos no son al azar, es la misma información que habíamos colocado en nuestra clase

Conexión.java (OracleConnection.java en la última versión).

Luego de dar Ok. les pide elegir el Esquema de la base de datos, aquí deben elegir el esquema que hayan

creado ustedes. Algunos crearon sus tablas en el esquema System, otros crearon sus propios esquemas.

En mi caso yo cree el esquema apu. Por lo tanto se elige el esquema apu.

Page 6: Uso Del Framework Hibernate Con Netbeans

Programación Orientada a Objetos 2009– Fac de Ingeniería – UNJu Clase 1 de Hibernate

Ariel Alejandro Vega. Prof. Adjunto 6

También se puede observar que cuando eligen un esquema Netbeans intenta establecer la conexión con

los parámetros definidos en la pantalla anterior a esta. Si lo logra se visualiza la legenda Connection

established (Conexión Establecida)

Cuando se ha establecido la conexión y se acepta, volvemos a la pantalla donde establecíamos la

conexión, en donde se muestra nuestra conexión, quedando almacenada en Netbeans para posteriores

proyectos y además se puede ver que el Campo Database Dialect dice

org.hibernate.dialect.OracleDialect

Este campo nos indica que hay un archivo llamado OracleDialect ubicado en el paquete

org.hibernate.dialect de la biblioteca Hibernate que agregamos en el primer paso; el cual posee la

relación entre los tipos de datos de la base de datos Oracle y los tipos de datos de JAVA. Es el encargado

de que el mapeo de ambos tipos de datos se realice de forma correcta.

Al finalizar vemos que el asistente creo el archivo hibernate.cfg.xml en el paquete dao.

Este archivo guarda la información necesaria para establecer la conexión a la base de datos.

Si elegimos la opción XML como lo indica la pantalla anterior podremos ver el contenido del archivo xml

Page 7: Uso Del Framework Hibernate Con Netbeans

Programación Orientada a Objetos 2009– Fac de Ingeniería – UNJu Clase 1 de Hibernate

Ariel Alejandro Vega. Prof. Adjunto 7

Los archivos XML se han convertido en un estándar muy usado para el intercambio de información y

configuración de aplicaciones, de reglas, de formatos de solicitud de requerimientos a través de la web ,

de la estructura de arquitecturas de frameworks como hibernate, por lo tanto su aprendizaje se vuelve

un requerimiento de todo buen programador y recomiendo que lo aprendan.

Básicamente para entender este archivo fíjense que hay nombres llamados property cuyo nombre están

en anaranjado. Estos elementos en azul se denominan tags, y el name lo que hace es como definir una

variable de ese tipo de tag. Es como si fuera la Clase Property y lo que está en anaranjado sea un

atributo.

Observen que un tag tiene un principio y un fin por ejemplo

<property> </property>

Es decir la información queda en el medio del inicio y fin del tag

Entonces sin entrar en mayor profundidad, los valores claves están definidos en tags que hibernate ya

tiene definidos con un nombre específico y cuyo valor es lo que nosotros hemos ingresado en el

asistente (el nombre del driver, la url, el usuario y password, el dialecto)

Paso 4: Crear un manejador del archivo hibernate.cfg.xml. Necesitamos poder usar ese archivo cuando

vamos a realizar un alta, baja, modificación o consulta. Hay varias formas de hacer esto. Netbeans nos

genera en forma automática una clase java que se encarga de esta tarea. Su nombre es

HibernateUtil.java. Para crearla hacemos los mismos pasos para crear un archivo

ConfigurationHibernate File, solo que en vez de elegir este archivo hay uno que se llama HibernateUtil

1

2

Page 8: Uso Del Framework Hibernate Con Netbeans

Programación Orientada a Objetos 2009– Fac de Ingeniería – UNJu Clase 1 de Hibernate

Ariel Alejandro Vega. Prof. Adjunto 8

Entonces se genera la Clase HibernateUtil.java que tiene la siguiente forma

Ahora debemos hacer un pequeño cambio. HibernateUtil.java busca hibernate.cfg.xml en la raíz de

nuestra aplicación pero nosotros hemos alterado esto colocando este archivo en el paquete dao.

Para modificar esto en el método configure de AnnotationConfiguration debemos pasarle la nueva

ubicación (línea 24 del código)

Entonces esa línea quedaría así

De esta forma no saltará ningún error.

Paso 5:

Bien ahora debemos crear la clase Persona y mapearla a la tabla Personas. Hay dos formas de hacer

esto.

La primera es usando el asistente de Netbeans; la otra es hacerla a mano.

Veamos la primera:

Primero creamos el paquete modelo.dominio ya que de esa forma veníamos trabajando. Luego

volvemos a crear un archivo de la categoría Hibernate, solo que elegimos la opción Hibernate Mapping

Files and POJOs from Database

Page 9: Uso Del Framework Hibernate Con Netbeans

Programación Orientada a Objetos 2009– Fac de Ingeniería – UNJu Clase 1 de Hibernate

Ariel Alejandro Vega. Prof. Adjunto 9

Esta opción nos va a crear la clase Personas y el archivo de mapeo desde la tabla Personas que ya debe

estar creada antes, al seguir los siguientes pasos

En la pantalla siguiente no modificamos nada y pasamos a la siguiente.

Page 10: Uso Del Framework Hibernate Con Netbeans

Programación Orientada a Objetos 2009– Fac de Ingeniería – UNJu Clase 1 de Hibernate

Ariel Alejandro Vega. Prof. Adjunto 10

Lo que visualiza son las tablas de la base de datos a la cual estamos conectada por medio del archivo

hibernate.cfg.xml. En este caso solo tengo 2 tablas que son las que use en los ejemplos anteriores.

Agregamos la tabla Personas y pasamos a la siguiente pantalla

• Aquí se ve que están tildados Domain Code (.java): Esta opción es la que creará la clase

Personas.java

• También está tildada Hibernate XML Mappings (.hbm.xml): Esta opción es la que crea el archivo

que mapea la tabla Personas con la Clase Personas.java

Fijarse que ambos archivos se crearan en el paquete dominio

Si aceptamos el paquete dominio queda así

Como se ven está la Clase Personas.java, el archivo Personas.hbm.xml y el archivo hibernate.reveng.xml

Para nuestro uso no hace falta entender el último archivo.

Page 11: Uso Del Framework Hibernate Con Netbeans

Programación Orientada a Objetos 2009– Fac de Ingeniería – UNJu Clase 1 de Hibernate

Ariel Alejandro Vega. Prof. Adjunto 11

Veamos la clase Personas.java

Como se ve esta clase es simplemente un Java Bean. No harían falta mayores explicaciones. Salvo que

para la convención que venimos manejando el nombre Personas.java no sería del todo correcto.

Por eso modificaremos el nombre de la clase a Persona.java

Ahora veamos el archivo Personas.hbm.xml

Page 12: Uso Del Framework Hibernate Con Netbeans

Programación Orientada a Objetos 2009– Fac de Ingeniería – UNJu Clase 1 de Hibernate

Ariel Alejandro Vega. Prof. Adjunto 12

Bien aquí debemos detenernos a analizar cada línea

El mapeo de la Clase Persona.java con la Tabla Personas empieza en la línea 5 y finaliza en la

línea 18 con el tag <hiernate-mapping>

La línea 6 es muy importante ya que en el tag <class> nosotros definimos en:

• name: El nombre de la Clase completo incluido el paquete. Ahí es donde debemos

corregir para que quede Persona

• table: El nombre de laTabla, que como vimos es PERSONAS

• schema: es el nombre del esquema que hemos usado

Las líneas 7 al 10 configuran el taf <id>: Este tag permite mapear la clave primaria de la tabla

Personas con el atributo correspondiente de la clase Persona.java:

Los name siempre se referirán a atributos de clases mientras que los column son los campos de

la tabla

En los property van los mapeos del resto de los atributos de la clase con respecto a los campos

de la tabla.

Fijarse que tienen el mismo formato

Ahora bien, otro aspecto no elegante de esta opción es que el archivo de mapeo está en el paquete

dominio. Lo correcto sería que esté en otro paquete.

Lo que haremos entonces es crear el paquete hibernate y luego moveremos con la opción refactor el

archivo Personas.hbm.xml a ese paquete, entonces debería quedar así

Ahora fijémonos en nuestro archivo hibernate.cfg.xml

Page 13: Uso Del Framework Hibernate Con Netbeans

Programación Orientada a Objetos 2009– Fac de Ingeniería – UNJu Clase 1 de Hibernate

Ariel Alejandro Vega. Prof. Adjunto 13

Fijarse que en la línea 10 se agregó el tag <mapping>. Esto le sirve al archivo para saber dónde está el

archivo de mapeo. Este tag lo agregó Netbeans al crear el archivo Personas.hbm.xml.

Como usamos la opción refactor para mover el archivo esta línea refleja este cambio, pero es una buena

actitud fijarse si el IDE hizo lo que tenía que hacer

Paso 6: Aplicar el PATRON DAO usando Hibernate

Bien ahora hacemos lo que ya vimos antes

1) Creamos una interface PersonaDAO en el paquete dao

2) Creamos la clase PersonaDAOImp que implemente PersonaDAO y use hibernate

Como queda definida la clase y el método INSERT

Page 14: Uso Del Framework Hibernate Con Netbeans

Programación Orientada a Objetos 2009– Fac de Ingeniería – UNJu Clase 1 de Hibernate

Ariel Alejandro Vega. Prof. Adjunto 14

Como se ve el método UPDATE

Como se ve el método DELETE

Se ve que todos estos métodos son similares:

Se usa un objeto Session de Hibernate (ojo al importar porque hay otros objetos Session que no

son de hibernate) que a su vez usa la Clase HibernateUtil (por si alguno se preguntaba para que

servía, aquí está la razón)

Como se ve el método GETALL

Page 15: Uso Del Framework Hibernate Con Netbeans

Programación Orientada a Objetos 2009– Fac de Ingeniería – UNJu Clase 1 de Hibernate

Ariel Alejandro Vega. Prof. Adjunto 15

Aquí vemos que usamos una Clase Criteria.

En hibernate las consultas se hacen usando HQL que es la sigla de Hibernate Query Language,

que es un lenguaje de consulta sobre objetos, a diferencia de SQL que se aplica sobre entidades

de bases de datos.

Criteria es una API que permite realizar consultas generales de una forma sencilla, que por atrás

usa también HQL. Es como si fuera un asistente de consultas HQL que se realizan de forma más

sencilla

En la línea donde se crea criteria vemos que le pasamos como parámetro la Clase Persona, es

decir las consultas que haga criteria se harán sobre la Clase Persona

Podemos usar la Clase Order para indicar que el resultado se ordene por algún atributo de la

clase Persona

Veamos el método GETPERSONA

Vemos que es similar al getAll ya que usa Criteria. La novedad es el uso de la Clase Restrictions.

Restrictions es una clase con métodos para indicar que un atributo sea mayor, menor, igual, etc. En

este caso indicamos que el atributo idPersona sea igual al valor de idPersona que viene como

parámetro en el método.

Nota: En este método asumo que si va a existir una persona con ese número. Se podría antes

verificar que exista el mismo. Por ejemplo usando otro método que devuelva true si existe, o

verificando que exista y almacenando el mismo en una variable, etc

En las siguientes clases vamos a usar hibernate para los casos de relaciones de tablas 1-n y n-n y

veremos otras características de Criteria. Incluso si podemos veremos algo de HQL. Espero les sirva

este archivo