Empezar con Hibernate

El mapeador que esta causando revuelo en el mundo de la programacion, ha llegado a mis necesidades laborales y por tal condicion toco aprender a usarlo aunque no a nivel de experto si con suficiencia para darlo a conocer.

Hace poco tiempo que empecé a trabajar con este mapeador y la verdad que al principio me tope con muchos problemas de hecho, lo primero que hice fue leer para que sirve, como funciona, que beneficios tiene, porque las aplicaciones deberían tener este componente. Lo que conseguí con esto fue lograr entender su funcionamiento y su facilidad para extraer información de diversos motores de datos.


Hibernate es para mi la capa intermedia entre el lógica de la aplicación y el motor de base de datos, es decir es un componente que de una u otra manera conoce los dos “mundos” en los cuales nos estamos moviendo, de allí su definición de mapeador objeto relacional, en él se definen básicamente lo siguiente:

  1. La conexión con la base de datos.
  2. Los archivos que contienen las consultas.
  3. Los archivos que contienen la definición de los objetos.  
Estas definiciones son almacenadas en el archivo hibernate.cfg.xml el cual a mi manera de ver es el encargado de tener todas las configuraciones que hibernate usara para “jugar” con la información que necesitemos.

A continuación se presenta un fragmento de una definición del archivo hibernate.cfg.xml donde definimos una fuente de datos llamada miBaseDatos y dos archivos de configuración.


<property name=" datasource">java:/jdbc/miBaseDatos</property>
<mapping resource="Banco.hbm.xml" />
<mapping resource="ConsultasBanco.hbm.xml" />


También encontramos los archivos *.hbm.xml que es donde se define la relación entre el modelo de datos y su respectivo objeto dentro del sistema que estamos desarrollando; normalmente podemos encontrar un archivo hbm.xml por cada tabla de la base de datos, en ellos definimos que el campo X con tipo de dato Y de la tabla tiene relación con la propiedad X de la clase, para continuar con el ejemplo se muestra a continuación la definición del archivo Banco.hbm.xml:

<class name=" Banco" table="BANCOS">
<property name="idBanco" type="java.lang.Integer">
<column name="CODIGO" not-null="true" />
</property>
<property name="nombreBanco" type="java.lang.String">
<column name="NOMBRE" not-null="true" />
</property>
</class>

Adicional a esta relación entre el campo de la base de datos y la propiedad de la clase se pueden encontrar las consultas que vamos a realizar a la tabla, la cuales pueden ser de dos tipos:

  • HQL (Hibernate Query Language) : Lenguaje propio de hibernate para acceder a los datos
  • SQL: Son las sentencias SQL que normalmente usamos para acceder a los datos

En este punto sugiero tener un archivo para la definición de la relación entre la tabla y las propiedades de la clase y otro archivo para las consultas, con el fin de tener un “seguro” por si la definición de la tabla cambia no tengamos inconvenientes con la autogeneración del archivo hbm.xml. Estos dos archivos deben ser configurados en el archivo hibernate.cfg.xml para que se puedan usar

En el siguiente texto se muestra la definición del archivo ConsultasBanco.hbm.xml


<sql-query name="getBancos">
SELECT CODIGO, NOMBRE
FROM BANCOS
<return class="Banco"/>
</sql-query>


Por ultimo definimos la clase (Banco) que va capturar la información de la consulta

public class Banco implements java.io.Serializable {
private Integer idBanco;
private String nombreBanco;
//Se adicionan los get y set de cada atributo

public ConsultaDescuentoAnticipado(
Integer idBanco
String nombreBanco) {
this.idBanco = idBanco;
this.nombreBanco = nombreBanco;
}
}

Ya con estos con estos temas entendidos podemos seguir con nuestra siguiente fase donde explicare como usar hibernate.

Si te fue útil, has comentarios y recomiéndalo !.

Comentarios

  1. Gracias por tu aporte, me fue de gran ayuda para empezar a entender las bases de hibernate

    ResponderEliminar
  2. Con gusto y seguiremos adelante publicando nuevos post que nos sirvan de ayuda a todos, saludos.

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Algo de Humor: Leyes de Java

MSDTC error code 0x8004D02A