Manejar dos bases de datos distintas con Hibernate

0
46964

Como manejar dos bases de datos distintas con Hibernate

Índice de contenidos

1. Introducción

2. Entorno

3. Hibernate con más de una base de datos

4. Probando la clase de ayuda

5. Conclusiones

1. Introducción

En ciertas ocasiones nos vemos obligados a manejar en una aplicación más de una base de datos diferente.

En este tutorial vamos a exponer una clase de ayuda para poder gestionar esta situación con Hibernate.

2. Entorno

El tutorial está escrito usando el siguiente entorno:

  • Hardware: Portátil Ahtex Signal X-9500M (Centrino 1.6 GHz, 1024 MB RAM, 60 GB HD).
  • Sistema Operativo: GNU / Linux, Debian Sid (unstable), Kernel 2.6.11, KDE 3.4
  • Máquina Virtual Java: JDK 1.5.0_03 de Sun Microsystems
  • Hibernate 3.0 (http://www.hibernate.org)

3. Hibernate con más de una base de datos

En principio no hay ningún problema para poder gestionar mas de una base de datos con Hibernate.

En Hibernate podemos tener mas de un fichero de configuración, siendo el fichero de configuración por defecto “hibernate.cfg.xml”. Cada fichero de configuración puede representar una conexión a una base de datos distinta, y por supuesto cada fichero de configuración hará referencia a los ficheros de mapeo correspondientes para las tablas de cada base de datos.

La clase que vamos a presentar a continuación pretende facilitar la gestión de está situación, consiguiendo de forma sencilla sesiones de Hibernate a cada una de las bases de datos.

Además la clase se encarga de asegurar que la sesión de Hibernate es única por Thread. Esto puede resultar muy conveniente en aplicaciones multithread o en aplicaciones Web donde múltiples clientes acceden de forma simultánea.

El código de la clase es el siguiente:

Este código está basado en la clase de ayuda propuesta por la documentación de Hibernate en:
http://www.hibernate.org/hib_docs/v3/reference/en/html/tutorial.html#tutorial-firstapp-helpers

4. Probando la clase de ayuda

Aquí proponemos un pequeño ejemplo para probar la clase de ayuda:

5. Conclusiones

Esta clase no pretende ser perfecta ni la solución definitiva (si encontráis algún bug decírmelo ;), pero si pretende ser un buen punto de partida para la gestión de múltiples bases de datos con Hibernate.

Seguramente un buen punto a mejorar es como se cierran las sesiones. Habría que intentar facilitar un poco más la vida al desarrollador, de forma que pudiera hacer algo como “aSession.close()” y ya se realizara toda la gestión (os lo dejo como deberes). En cualquier caso no os olvidéis nunca de cerrar las sesiones (y en general de cerrar cualquier recurso: conexiones, streams, …).

Espero que os sirva de ayuda, y nos vemos en el próximo tutorial.

 

Dejar respuesta

Please enter your comment!
Please enter your name here