Hibernate: Mapeo Objeto/Relacional en Java

Posted in Articulos por Xployt on 18 Septiembre 2009 3 Comentarios

Buenas madrugadas noches a todos, soy Osvaldo Mena, el pajarito nuevo de TrickyWeb, estudiante de Ingeniería Civil Informática (UTFSM) de 3er año. Actualmente estoy trabajando como analista y programador (Java, VM y AJAX). Mi postura en este sitio será la de ir publicando ciertos tips y mañas que se aprenden con la práctica.

El objetivo de este post es aprender como se trabaja con los mundos tan dispares de las bases de datos relacionales y la programación orientada a objetos (En particular, Java). Si usted no posee conocimientos de Java y Bases de Datos, le aconsejo que empiece por leer un buen tutorial de orientación a objetos, o bien, que vaya a darle de comer al chimpancé que corre en la rueda que permite que su computador esté encendido, para que no pierda el tiempo tratando de aprender algo que no utilizará en el corto plazo.

Trabajar con software orientado a objetos y con bases de datos relacionales no es tan fácil como pareciese en un principio, de hecho, para quienes recién comienzan con el tema, se les hace extremadamente difícil establecer una comunicación fluida entre una base de datos y la lógica del software.

Hibernate se presenta como un Motor de Persistencia de Datos. En un principio esto suena a chino mandarín, pero como siempre, Wikipedia nos ofrece una definición bastante aterrizada:

“Estos motores facilitan el mapeo objeto-relacional de atributos entre una base de datos relacional tradicional y suplen la funcionalidad de una Base de datos orientada a objetos. Estos motores buscan solucionar el problema de la diferencia entre los dos modelos usados hoy en día para organizar y manipular datos: El usado en la memoria de la computadora (orientación a objetos) y el usado en las bases de datos (modelo relacional). Para lograr esto permite al desarrollador detallar cómo es su modelo de datos, qué relaciones existen y qué forma tienen.”

Quizás mas de algún lector en sus primeros pasos en estos mundos se vió en la obligación de tener que escribir en algún código una consulta del tipo “Select * from usuario where id_usuario = $usuario->getId();” (PHP) para poder obtener los datos de un usuario en particular, esto obviamente no es la solución más acertada para el mundo actual en el que vivimos, donde la productividad juega un rol clave en el entorno del desarrollo de software. Hibernate permite al programador lograr un nivel de abstracción óptimo de la base de datos tras haber descrito el modelo de datos mediante archivos XML.

Entre las bondades de Hibernate tenemos:

  • Soporta la interacción con los motores de bases de datos relacionales más conocidos (Oracle, Postgres, MS SQL Server, Sybase y muchos más), además de permitir abstraernos del dialecto de SQL que ocupe el motor de bases de datos mediante la utilización de un lenguaje propio de Hibernate (HQL). Es decir, ante un eventual cambio del RDBMS no hay que hacer el gran cambio en el software (una línea).
  • Mapeo de clases Java a las tablas de una base de datos.
  • Conversión casi automática entre tipos de datos Java y los tipos de datos de la base de datos.
  • Utilidades para consulta y captura de datos, lo cual nos permite reducir de manera considerable “la montonera” de consultas que habría que hacer a mano y que en general, dejan la escoba en el código.
  • Uso inteligente de sesiones, lo que permite reducir el número de interacciones con la base de datos, ya que el sabiondo de Hibernate sabe cuándo debe acceder a un dato de la base de datos y cuando utilizar el que está en memoria.
  • Totalmente personalizable, ya que se pueden forzar ciertos comportamientos de Hibernate para aumentar la performance de nuestro software.

La meta de Hibernate es aliviar al programador del 95% de las tareas de persistencia de datos. La curva de aprendizaje de Hibernate en un principio puede parecer bastante lenta, sin embargo, es bastante intuitiva y a fin de cuentas, permite centrarnos en la lógica del negocio y producir software de nivel corporativo.

Espero que esta pequeña introducción sirva para orientarse dentro del mundo de la persistencia de datos, saludos!

Hibernate.org , Tutorial de Hibernate

PD: En el mercado existen muchos Motores de Persistencia de Datos, tales como D4BO, Gentle .NET, IBatis, incluso existe NHibernate en su port para .NET; aún así, Hibernate sale muy bien parado en las comparativas de performance, documentación y utilidad.

VN:F [1.6.8_931]
Rating: 9.4/10 (5 votes cast)

3 Responses to “Hibernate: Mapeo Objeto/Relacional en Java”

  1. Juan says:

    Interesante…se agradece la info….voi a caxar si lo puedo usar en lo que estoy haciendo en .net…..
    Saludos

    UN:F [1.6.8_931]
    Rating: 0.0/5 (0 votes cast)
  2. coke says:

    hibernate rocks, sobre todo si uno sabe aplicar JPA te deja la pega lista, llega a dar gusto editar las queries de forma tan amena.. buen post

    UN:F [1.6.8_931]
    Rating: 0.0/5 (0 votes cast)
  3. JavaMan says:

    Interesante aqui te dejo mis dos Blogs. Aqui encontraras cosas tambien muy interesantes:

    http://viviendoconjavaynomoririntentandolo.blogspot.com

    http://frameworksjava2008.blogspot.com

    Saludos.

    UN:F [1.6.8_931]
    Rating: 0.0/5 (0 votes cast)

Leave a Reply

Please leave these two fields as-is:

Protected by Invisible Defender. Showed 403 to 5,782 bad guys.