Integraci n de Frameworks Spring e Hibernate Para Aplicaciones JAVA Desktop
-
Upload
augusto-de-la-cruz-camayo -
Category
Documents
-
view
223 -
download
0
Transcript of Integraci n de Frameworks Spring e Hibernate Para Aplicaciones JAVA Desktop
7/29/2019 Integraci n de Frameworks Spring e Hibernate Para Aplicaciones JAVA Desktop
http://slidepdf.com/reader/full/integraci-n-de-frameworks-spring-e-hibernate-para-aplicaciones-java-desktop 1/20
Ingeniero en Informática: Ariel Alejandro Vega e-mail:[email protected]
APU 2008 – Univ Nacional de Jujuy - San Pedro - Programación y Servicios Web Pag 1
Integración de Framework’s Spring e Hibernate para
aplicaciones JAVA Desktop
Requisitos:
IDE de trabajo Netbeans 7.3
Biblioteca Hibernate: En este ejemplo se utiliza Hibernate versión 3.2.5.
Biblioteca Spring: En este ejemplo se utiliza Spring 3.1.1
Archivos asm.jar y cglib.jar
INCORPORACION DEL FRAMEWORK HIBERNATE AL PROYECTO
Paso 1: Integrar el Framework Hibernate al proyecto de la aplicación.
Para ello se debe crear en primera instancia el Archivo de Configuración de Configuración de
HIbernate. El IDE Netbeans permite utilizar un asistente para crear el archivo de Configuración deforma asistida.
Figura 1. Sobre el nombre del proyecto, botón derecho New -> Other
7/29/2019 Integraci n de Frameworks Spring e Hibernate Para Aplicaciones JAVA Desktop
http://slidepdf.com/reader/full/integraci-n-de-frameworks-spring-e-hibernate-para-aplicaciones-java-desktop 2/20
Ingeniero en Informática: Ariel Alejandro Vega e-mail:[email protected]
APU 2008 – Univ Nacional de Jujuy - San Pedro - Programación y Servicios Web Pag 2
Figura 2. Seleccioar la categoría HIbernate y el Tipo de Archivo HIbernate Configuration Wizard
Figura 3. En la tercera pantalla de asistencia seleccionar en Database Connection “New Database
Connection” si no existe la conexión
Figura 4. En la ventana que aparece seleccionar el Driver Jdbc correspondiente (o agregarlo) y
luego presionar Next
7/29/2019 Integraci n de Frameworks Spring e Hibernate Para Aplicaciones JAVA Desktop
http://slidepdf.com/reader/full/integraci-n-de-frameworks-spring-e-hibernate-para-aplicaciones-java-desktop 3/20
Ingeniero en Informática: Ariel Alejandro Vega e-mail:[email protected]
APU 2008 – Univ Nacional de Jujuy - San Pedro - Programación y Servicios Web Pag 3
Figura 5. Según el tipo de driver elegido esta pantalla puede variar. Para driver MySQL se debe
ingresar en Database el esquema existente en el motor de base de datos, en password el
password. Finalmente presionar el botón Test Connection. Si los datos son correctos saldrá el
mensaje Connection Succeded. Presionar luego Next
Figura 6. Ubicación y contenido del archivo Hibernate.cfg.xml en modo diseño y fuente (código
xml)
7/29/2019 Integraci n de Frameworks Spring e Hibernate Para Aplicaciones JAVA Desktop
http://slidepdf.com/reader/full/integraci-n-de-frameworks-spring-e-hibernate-para-aplicaciones-java-desktop 4/20
Ingeniero en Informática: Ariel Alejandro Vega e-mail:[email protected]
APU 2008 – Univ Nacional de Jujuy - San Pedro - Programación y Servicios Web Pag 4
Estas acciones agregan el Framework Hibernate en la carpeta libraries.
Punto 2: Generar los mapeos del ORM (Object Relational Model).
El mapeo se puede realizar de dos formas: Usando archivos de mapeos o usando anotaciones en
las definiciones de las clases de dominio. Netbeans posee un Asistente para generar los mapeos
mediante archivos de mapeos.
Figura 7. Se elige Hibernate Reverse Engineering Wizard (si no está presente se debe buscar en la
categoría Hibernate mostrada en la Figura 2). Este archivo permite elegir cuáles serán las tablas de
la base de datos que se mapearán
7/29/2019 Integraci n de Frameworks Spring e Hibernate Para Aplicaciones JAVA Desktop
http://slidepdf.com/reader/full/integraci-n-de-frameworks-spring-e-hibernate-para-aplicaciones-java-desktop 5/20
Ingeniero en Informática: Ariel Alejandro Vega e-mail:[email protected]
APU 2008 – Univ Nacional de Jujuy - San Pedro - Programación y Servicios Web Pag 5
Figura 8. En Configuration File se elige el archivo de configuración mediante el cual el asistente se
podrá conectar a la base de datos para mostrar las tablas disponibles. Con el botón Add y Add All
se elegirán las tablas que se mapearán
Figura 9. Contenido del archivo hibernate.reveng.xml
Figura 10. Crear el paquete hibernate.mappgins para contener los archivos de mapeos
Figura 11. Se elige Hibernate Mappings Files and POJOs from Database… (si no está presente se
debe buscar en la categoría Hibernate mostrada en la Figura 2). Esta opción permite generar en
forma automática los mapeos.
7/29/2019 Integraci n de Frameworks Spring e Hibernate Para Aplicaciones JAVA Desktop
http://slidepdf.com/reader/full/integraci-n-de-frameworks-spring-e-hibernate-para-aplicaciones-java-desktop 6/20
Ingeniero en Informática: Ariel Alejandro Vega e-mail:[email protected]
APU 2008 – Univ Nacional de Jujuy - San Pedro - Programación y Servicios Web Pag 6
Figura 12. En esta pantalla se debe elegir el archivo de configuración (campo Hibernate
Configuration File) y el archivo que indicar que tablas mapear (campo Hibernate Reverse
Engineering File). Si se deja tildada la opción Domain Code se generarán las clases de las tablas
mapeadas. Si se tilda Hibernate XML Mappings se generarán los mapeos de las tablas
seleccionadas.
Figura 13. Por cada tabla del archivo de tablas a mapear se generan la clase y archivo de mapeo
correspondiente con el nombre de la tabla.
Paso 3: Configurar el proyecto para aplicar buenas prácticas de programación orientada a objetos
7/29/2019 Integraci n de Frameworks Spring e Hibernate Para Aplicaciones JAVA Desktop
http://slidepdf.com/reader/full/integraci-n-de-frameworks-spring-e-hibernate-para-aplicaciones-java-desktop 7/20
Ingeniero en Informática: Ariel Alejandro Vega e-mail:[email protected]
APU 2008 – Univ Nacional de Jujuy - San Pedro - Programación y Servicios Web Pag 7
Figura 14. Crear el paquete modelo.dominio. En este paquete se colocarán las clases mapeadas
Figura 15. Modificar el nombre de las clases para que estén en Singular y mover las clases al
paquete modelo.dominio. Observe que no se tilda la opción Move Without REfactoring. Es decir se
permite que los cambios generados por la acción de mover la Clase se actualicen en las otrasclases y archivos con el objetivo de que no haya inconsistencias
7/29/2019 Integraci n de Frameworks Spring e Hibernate Para Aplicaciones JAVA Desktop
http://slidepdf.com/reader/full/integraci-n-de-frameworks-spring-e-hibernate-para-aplicaciones-java-desktop 8/20
Ingeniero en Informática: Ariel Alejandro Vega e-mail:[email protected]
APU 2008 – Univ Nacional de Jujuy - San Pedro - Programación y Servicios Web Pag 8
Figura 16. Cambiar el nombre del Archivo de mapeo para que coincida con el de la Clase (es
opcional). Verificar el contenido del Archivo de Mapeo.
INCOPORPORACION DEL FRAMEWORK SPRING
Paso 1: Integrar el Framework Spring al proyecto de la aplicación.
Para ello se debe crear en primera instancia un archivo contexto de xml. Este archivo gestionará la
integración entre Hibernate y Spring. El IDE Netbeans permite utilizar un asistente para crear el
archivo de contexto.
Figura 17. Sobre el nombre del proyecto, botón derecho New -> Other
7/29/2019 Integraci n de Frameworks Spring e Hibernate Para Aplicaciones JAVA Desktop
http://slidepdf.com/reader/full/integraci-n-de-frameworks-spring-e-hibernate-para-aplicaciones-java-desktop 9/20
Ingeniero en Informática: Ariel Alejandro Vega e-mail:[email protected]
APU 2008 – Univ Nacional de Jujuy - San Pedro - Programación y Servicios Web Pag 9
Figura 18. En la categoría Other seleccionar el archivo Spring XML Configuration File
Figura 19. Colocar cono nombre applicationContext y ubicar el archivo en la raíz (src)
7/29/2019 Integraci n de Frameworks Spring e Hibernate Para Aplicaciones JAVA Desktop
http://slidepdf.com/reader/full/integraci-n-de-frameworks-spring-e-hibernate-para-aplicaciones-java-desktop 10/20
Ingeniero en Informática: Ariel Alejandro Vega e-mail:[email protected]
APU 2008 – Univ Nacional de Jujuy - San Pedro - Programación y Servicios Web Pag 10
Figura 20. Seleccionar el botón Add Spring Framework para agregar el Framework
Figura 21. Se observa cómo se agrega el archivo applicationContext.xml en la raíz y se ve el
contenido del archivo. En la carpeta libraries se agregan los archivos de la biblioteca de Spring.
7/29/2019 Integraci n de Frameworks Spring e Hibernate Para Aplicaciones JAVA Desktop
http://slidepdf.com/reader/full/integraci-n-de-frameworks-spring-e-hibernate-para-aplicaciones-java-desktop 11/20
Ingeniero en Informática: Ariel Alejandro Vega e-mail:[email protected]
APU 2008 – Univ Nacional de Jujuy - San Pedro - Programación y Servicios Web Pag 11
Paso 2: Agregar los archivos asm.jar y cglib al proyecto
Finalmente se deben agregar los archivos asm.jar y cglib.jar ya que estos archivos no se hallan en
la versión 3.1.1 de Spring. Estos archivos son necesarios para poder realizar la integración con
Hibernate. En versiones anteriores de Spring e Hibernate no se necesitaba incorporar archivos
específicos. En este ejemplo se han incorporados las versiones asm-1.5.1.jar y cglib-2.1.3.jar queno han mostrado inconsistencias e incompatibilades.
Figura 22. Sobre el nombre del proyecto presionar el botón derecho del mouse. Seleccionar la
opción Properties
7/29/2019 Integraci n de Frameworks Spring e Hibernate Para Aplicaciones JAVA Desktop
http://slidepdf.com/reader/full/integraci-n-de-frameworks-spring-e-hibernate-para-aplicaciones-java-desktop 12/20
Ingeniero en Informática: Ariel Alejandro Vega e-mail:[email protected]
APU 2008 – Univ Nacional de Jujuy - San Pedro - Programación y Servicios Web Pag 12
Figura 23. Elegir la categoría Libraries. Allí se observan las bibliotecas incorporadas (Hibernate,
Spring, Persistence y el driver Jdbc). Se presiona el botón Add JAR/Folder para seleccionar y ubicar
a través de explorador de Windows donde se halla los archivos asm.jar y cglib.jar
Figura 24. Luego de agreggarlos con el botón Move Up colocarlos al inicio del listado
7/29/2019 Integraci n de Frameworks Spring e Hibernate Para Aplicaciones JAVA Desktop
http://slidepdf.com/reader/full/integraci-n-de-frameworks-spring-e-hibernate-para-aplicaciones-java-desktop 13/20
Ingeniero en Informática: Ariel Alejandro Vega e-mail:[email protected]
APU 2008 – Univ Nacional de Jujuy - San Pedro - Programación y Servicios Web Pag 13
IMPLEMENTACION DEL PATRON DAO PARA LA GENERACION DE LAS TRANSACCIONES SOBRE EL
MOTOR DE DATOS
Paso 1: Generación de los contratos de transacciones mediante el uso de transacciones
Figura 25. Crear el paquete hibernate.dao
Figura 26. Contenido de la interface de UsuarioDAO. Los métodos definidos son los que
normalmente se definen para las transacciones que se corresponden a la Alta – Baja- Modificación
– Consulta. En este ejemplo se toma una Clase Usuario.
Paso 2: Generar las implementaciones integrando Spring e Hibernate
Figura 27. Crear el paquete hibernate.dao.imp
7/29/2019 Integraci n de Frameworks Spring e Hibernate Para Aplicaciones JAVA Desktop
http://slidepdf.com/reader/full/integraci-n-de-frameworks-spring-e-hibernate-para-aplicaciones-java-desktop 14/20
Ingeniero en Informática: Ariel Alejandro Vega e-mail:[email protected]
APU 2008 – Univ Nacional de Jujuy - San Pedro - Programación y Servicios Web Pag 14
Figura 28. Contenido de la clase UsuarioDAOImp. Para que Hibernate sea gestionado por Spring
esta clase debe heredar de HibernateDaoSupport (que pertenece a la biblioteca de Spring, ubicado
en org.springframework.orm.hibernate3.support.HibernateDaoSupport). Además se hace queimplemente Serializable con el objetivo de facilitar el flujo de información entre el motor de datos
y las clases. Se implementa de UsuarioDAO para obligar al programador a implementar los
métodos de transacción.
Figura 29. El método heredado de HibernateDaoSupport denominado getHibernateTemplate()
devuelve un objeto HibernateTemplate que posee el método sabe() que se encarga de gestionar laconexión, transacción y cierre de conexión que realiza Hibernate.
7/29/2019 Integraci n de Frameworks Spring e Hibernate Para Aplicaciones JAVA Desktop
http://slidepdf.com/reader/full/integraci-n-de-frameworks-spring-e-hibernate-para-aplicaciones-java-desktop 15/20
Ingeniero en Informática: Ariel Alejandro Vega e-mail:[email protected]
APU 2008 – Univ Nacional de Jujuy - San Pedro - Programación y Servicios Web Pag 15
Figura 30. De la misma forma se usa el método getHibernateTemplate() para actualizar (update())
y eliminar objetos (delete()) persistidos en el motor de datos relacional.
Figura 31. Se observa la definición de los atributos de la clase Usuario. El método getUsuario()
debe devolver un objeto bajo dos parámetros el nombre de usuario y su password. Se define la
clase DetachedCriteria que lo que hace es permitir conformar consultas sobre una lista de objetos
bajo determinados criterios de búsqueda. En este caso en forClass(Usuario.class) se indica que las
consultas se realizarán sobre una lista de objetos Usuario. Hasta allí la consulta devolvería todos
los objetos de tipo Usuario que se hallen en el motor de base de datos relacional.el método add()
permite agregar un criterio de búsqueda. La clase Restrictions hace que ese criterio sea un filtro,
es decir se limitará la lista a aquellos que cumplan cierta restricción. El Método like() de
Restrictions permite hacer una restrictions aplicable sobre un atributo de tipo String. El primer
parámetro indica sobre cual atributo se realizará el filtro, si se observa se realizarán sobre los
atributos nombreUsuario y password (equivalentes a los campos nombre_usuario y password
respectivamente de la tabla USUARIOS como se puede observar en el archivo Usuario.hbm.xml de
la Figura 16). El segundo parámetro del método like() indica cual es la condición que debe cumplir,
en este caso son los parámetros del método. Para ejecutar la consulta se debe utilizar el método
findByCriteria() del método getHibernateTemplate(). Observe que findByCriteria() recibe el criterio
creado sobre el cual se aplicaron las restricciones. Como se comentó anteriormente criteria define
una consulta de objetos. Por lo tanto el resultado del método findByCriteria devuelve una lista de
objetos. Por ello se pide que de dicha lista devuelva el primer objeto de la lista (en este caso se
7/29/2019 Integraci n de Frameworks Spring e Hibernate Para Aplicaciones JAVA Desktop
http://slidepdf.com/reader/full/integraci-n-de-frameworks-spring-e-hibernate-para-aplicaciones-java-desktop 16/20
Ingeniero en Informática: Ariel Alejandro Vega e-mail:[email protected]
APU 2008 – Univ Nacional de Jujuy - San Pedro - Programación y Servicios Web Pag 16
supone que el método getUsuario() es una búsqueda en la cual si existe el usuario devolverá una
lista con un solo objeto).
Figura 32. En este método se observa que se realiza la misma restricción y se analiza si la lista de
objetos devuelta está vacía o no. Si está vacía el usuario (con el nombre y password indicados en
los parámetros) no existe en el motor de base de datos.
Figura33. Observe que el objetivo de este método es obtener una lista de todos los objetos
Usuario persisitidos en el motor de base de datos relacional. Por lo tanto no es necesario agregar
criterios.
CONFIGURACION DEL ARCHIVO DE CONTEXTO DE SPRING
El objetivo es poder aplicar dos beneficios muy importantes de Spring: La gestión del ciclo de vida
de los objetos, mediante el uso de Inyección de Dependencias. El otro beneficio es dejar que
Spring gestione a Hibernate.
Paso 1: Indicar donde se hallan los datos de conexión al motor de datos
Para lograr Spring gestine Hibernate no alcanza con hacer que las clases de los DAOImp hereden
de HibernateDaoSupport. En applicationContext.xml se debe explicitar que Spring gestiona
mediante su módulo ORM a Hibernate
Figura 34. El bean propertyConfigurer sirve para indicar que la clase
PropertyPlaceHolderConfigurer gestionará Hibernate. Los datos de la conexión al motor de datos
se hallan en un archivo denominado jdbc.properties. Este archivo es un equivalente de
Hibernate.cfg.xml.
7/29/2019 Integraci n de Frameworks Spring e Hibernate Para Aplicaciones JAVA Desktop
http://slidepdf.com/reader/full/integraci-n-de-frameworks-spring-e-hibernate-para-aplicaciones-java-desktop 17/20
Ingeniero en Informática: Ariel Alejandro Vega e-mail:[email protected]
APU 2008 – Univ Nacional de Jujuy - San Pedro - Programación y Servicios Web Pag 17
Figura 35. Sobre el nombre del proyecto, botón derecho New -> Other
Figura 36. En la categoría Other se selecciona el arhivo Properties File
7/29/2019 Integraci n de Frameworks Spring e Hibernate Para Aplicaciones JAVA Desktop
http://slidepdf.com/reader/full/integraci-n-de-frameworks-spring-e-hibernate-para-aplicaciones-java-desktop 18/20
Ingeniero en Informática: Ariel Alejandro Vega e-mail:[email protected]
APU 2008 – Univ Nacional de Jujuy - San Pedro - Programación y Servicios Web Pag 18
Figura 37. Se indica el nombre jdb
Figura 38. Ubicación del archivo jdbc.properties y contenido del mismo. Observe que se crean
variables que referencian al driver, la url y el usuario y password para acceder al motor de base de
datos. Los nombres de las variables no cambian. Los valores de las variables dependen del motor
de base de datos y el driver jdbc utilizado. Estos valores se pueden obtener de Hibernate.cfg.xml
generado.
Paso 2: Referenciar las variables de jdbc.properties
7/29/2019 Integraci n de Frameworks Spring e Hibernate Para Aplicaciones JAVA Desktop
http://slidepdf.com/reader/full/integraci-n-de-frameworks-spring-e-hibernate-para-aplicaciones-java-desktop 19/20
Ingeniero en Informática: Ariel Alejandro Vega e-mail:[email protected]
APU 2008 – Univ Nacional de Jujuy - San Pedro - Programación y Servicios Web Pag 19
Figura 39. Se agrega en applicationContext.xml el bean dataSource para indicar que Spring
gestionará la conexión al motor de base de datos con las variables que serán buscadas en
jdbc.properties.
Figura 40. El bean mySessionFactory indica que las Sesiones de HIbernate las gestionará la clase
LocalSessionFactoryBean de la biblioteca de Spring. El property dataSorce indica que utilizará la
información del bean dataSource (el cual referencia el archivo jdbc.prperties y posee las variables
para establecer la conexión). El property mappginsResources indica en cada tag <value> donde se
hallan los archivos de mapeo (porque Spring no usará el archivo Hibernate.cfg.xml para buscar los
archivos de mapeo). El property hibernateProperties indica otras configuraciones como por
ejemplo el dialecto a usar.
Paso 2: Establece las Inyecciones de dependencias
Mediante la Inyección de Dependencias Spring gestiona la creación de objetos y su destrucciónmediante un controlador. El objetivo en este caso es que Spring gestione el ciclo de vida de los
DAOImp
Figura 41. Para crear un bean con inyección de dependencia simplemente se crea el bean con un
id y se indica la clase sobre la que Spring generará un objeto cuando se lo referencie con ese id(cuando se referencie a usuarioService, Spring generará un objeto de UsuarioDAOImp). El property
sessionFactory indica que además ese objeto también será gestionado por Spring mediante el
bean mySessionFactory (el cual indica donde están los archivos de mapeo)
7/29/2019 Integraci n de Frameworks Spring e Hibernate Para Aplicaciones JAVA Desktop
http://slidepdf.com/reader/full/integraci-n-de-frameworks-spring-e-hibernate-para-aplicaciones-java-desktop 20/20
Ingeniero en Informática: Ariel Alejandro Vega e-mail:[email protected]
EJECUCION EN APLICACIONES DESKTOP
Sea la siguiente pantalla diseñada en Swing
Al presionar el botón Validar Usuario, se debe buscar si el Usuario existe en la base de datos.
Este es código que posee el método que responde al evento click
Como se observa se generan dos variables de tipo String que almacenan los campos Nombre
Usuario y Password ingresados en la pantalla Coonectar Usuario.
Una variable de tipo Boolean denominada usuarioValido es igual al resultado del método
validarUsuario() mostrado a continuación
Como se observa para poder acceder a la información alojada en el archivo applicationContext.xml
se genera un objeto de tipo ApplicationContext y se lo instancia usando la claseClassPathXmlApplicationContext y se envía como parámetro la ubicación del archivo
applicationContext.xml
La Inyección de Dependencia se obtiene haciendo que usuarioDAO no utilice la sentencia new sino
que la obtiene del método getBean() al cual se le pasa el nombre del bean que representa a
UsuarioDAOImp el cual es “usuarioService” (observe la Figura 41). A partir de allí la gestión de los
métodos de usuarioDAO se realiza de manera convencional.