0% encontró este documento útil (0 votos)
16 vistas4 páginas

Hibernate Mapeo

Los archivos de mapeo en Hibernate, con extensión .hbm.xml, son utilizados para definir la relación entre las tablas de una base de datos y las clases Java, permitiendo que Hibernate genere automáticamente las consultas SQL necesarias. La ingeniería inversa facilita la creación de estos archivos, y herramientas como NetBeans pueden generar automáticamente los mapeos y las clases correspondientes. Además, Hibernate gestiona la persistencia de objetos a través de sesiones, que permiten realizar operaciones sobre la base de datos y manejar diferentes estados de los objetos persistentes.

Cargado por

Ismael Mangas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
16 vistas4 páginas

Hibernate Mapeo

Los archivos de mapeo en Hibernate, con extensión .hbm.xml, son utilizados para definir la relación entre las tablas de una base de datos y las clases Java, permitiendo que Hibernate genere automáticamente las consultas SQL necesarias. La ingeniería inversa facilita la creación de estos archivos, y herramientas como NetBeans pueden generar automáticamente los mapeos y las clases correspondientes. Además, Hibernate gestiona la persistencia de objetos a través de sesiones, que permiten realizar operaciones sobre la base de datos y manejar diferentes estados de los objetos persistentes.

Cargado por

Ismael Mangas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 4

Explicación de Archivos de Mapeo en Hibernate

1. ¿Qué es un archivo de mapeo en Hibernate?


Hibernate utiliza archivos en formato XML, con la extensión .hbm.xml, para definir la
relación entre las tablas de una base de datos y las clases de Java (POJOs - Plain Old Java
Objects). Estos archivos de mapeo son esenciales para que Hibernate entienda cómo
conectar una tabla con una clase y cómo se corresponden las columnas con las propiedades
de la clase.

Por ejemplo:
- Si tienes una tabla 'usuarios' en tu base de datos, puedes tener un archivo
Usuario.hbm.xml que mapea esta tabla con una clase Java llamada Usuario.

2. Estructura básica del archivo de mapeo


Todos los archivos de mapeo comienzan y terminan con la etiqueta <hibernate-mapping>
en el XML. Esta etiqueta puede incluir un atributo package para indicar el paquete donde se
encuentra la clase Java asociada.

Ejemplo básico:

<hibernate-mapping package="com.miempresa.modelos">
<class name="Usuario" table="usuarios">
<id name="id" column="id_usuario">
<generator class="increment"/>
</id>
<property name="nombre" column="nombre_usuario"/>
<property name="email" column="correo_electronico"/>
</class>
</hibernate-mapping>

3. Convención de nombres de los archivos de mapeo


El archivo de mapeo suele tener el nombre de la clase asociada, seguido de .hbm.xml.
Ejemplo:
Para la clase Usuario, el archivo de mapeo sería Usuario.hbm.xml.

4. Conexión con la base de datos


Cuando Hibernate necesita interactuar con la base de datos (insertar, actualizar, eliminar o
consultar datos), utiliza los archivos de mapeo para generar automáticamente las consultas
SQL necesarias. Esto ocurre al establecer una conexión JDBC a la base de datos.

5. Ingeniería inversa con Hibernate


Hibernate facilita la creación de los archivos de mapeo mediante un proceso llamado
ingeniería inversa. En este proceso:
- Hibernate analiza las tablas existentes en una base de datos.
- Genera automáticamente los archivos de mapeo .hbm.xml y los POJOs correspondientes.

El archivo que configura este proceso se llama Hibernate.reveng.xml. Este archivo permite
personalizar qué tablas y columnas se mapean y cómo se realiza la correspondencia de
tipos entre JDBC y Hibernate.

Ejemplo de Hibernate.reveng.xml:

<!DOCTYPE hibernate-reverse-engineering>
<hibernate-reverse-engineering>
<schema-selection match-schema="mi_esquema"/>
<table-filter match-name="usuarios"/>
</hibernate-reverse-engineering>

6. Uso del asistente de NetBeans para crear mapeos


NetBeans ofrece un asistente para facilitar la configuración de Hibernate. A través de este
asistente:
1. Seleccionas 'Nuevo Mapeo en Hibernate'.
2. Rellenas la información requerida (como las tablas a mapear).
3. NetBeans genera automáticamente:
- El archivo de mapeo .hbm.xml.
- El POJO correspondiente (por ejemplo, Usuario.java).
- Una entrada en el archivo de configuración principal de Hibernate, hibernate.cfg.xml.

Ejemplo de entrada agregada en hibernate.cfg.xml:

<mapping resource="Usuario.hbm.xml"/>

Comparación de las técnicas


Aspecto Colecciones Relaciones Herencia

Moderada (depende de
Alta (tipos variados y Alta (tres estrategias
Flexibilidad las relaciones
configurables) de mapeo)
existentes)

Moderada (depende de Moderada (requiere Alta (modelar herencia


Complejidad
la colección) transacciones y claves) en bases relacionales)

Consistencia Fácil de alinear con el Directa al respetar Requiere más ajustes al


modelo modelo de objetos tipos de relaciones modelo relacional

Uso de tablas Solo para muchos-a- Puede ser necesario en Depende de la


adicionales muchos o colecciones relaciones complejas estrategia (algunas
complejas usan más tablas)

Se denomina "persistencia" de los objetos a su capacidad para guardarse y recuperarse


desde un medio de almacenamiento. Las clases persistente son clases en una aplicación
que nos van a servir para representar entidades de la base de datos.

El estándar Java Data Objects (JDO), define una clase con capacidad de persistencia,
como aquella que implementa la interaface javax.jdo.PersistenceCapable.

Las clases persistentes tienen la capacidad de definir objetos que pueden almacenarse y
recuperarse y un almacén persistente de datos. La especificación JDO incorpora la figura
del procesador de clases en código ejecutable Java, JDO, que es un programa que
modifica los archivos compilados de las clases, añadiendo el código ejecutable necesario
para realizar la grabación y recuperación transparente de los atributos de las instancias
persistentes.

La sesión está formada internamente por una cola de sentencias SQL que son necesarias
ejecutar para poder sincronizar el estado de la sesión con la base de datos.

Asimismo, la sesión contiene un lista de objetos persistentes. Un sesión corresponde con el


primer nivel de caché.

Si para realizar el acceso a datos, usamos Hibernate, la sesión nos permite definir el alcance
de un contexto determinado. Para poder utilizar los mecanismos de persistencia
de Hibernate se debe inicializar el entorno Hibernate y obtener un objeto Session utilizando
la clase SessionFactory de Hibernate. Un objeto Session Hibernate representa una única
unidad-de-trabajo para un almacén de datos dado y lo abre un ejemplar de SessionFactory.
Se deben cerrar las sesiones cuando se haya completado todo el trabajo de una transacción.

Los estados en los que se puede encontrar un objeto son:

 Transitorio (Transient). En este estado estará un objeto recién creado que no ha


sido enlazado con el gestor de persistencia.

 Persistente: Ente este caso el objeto está enlazado con la sesión. Todos los cambios
que se realicen será persistentes.

 Disociado (Detached): En este caso nos encontramos con un objeto persistente que
sigue en memoria después de que termine la sesión. En este caso existe en Java y en
la base de datos.

 Borrado (Removed): En este caso el objeto está marcado para ser borrado de la base
de datos. Existe en la aplicación Java y se borrará de la base de datos al terminar la
sesión.
 Para cargar un objeto de acceso a datos en la aplicación Java, el método load() de la
clase Session suministra un mecanismo para capturar una instancia persistente, si
conocemos su identificador. El método load() acepta un objeto Class, y cargará el estado
de una nueva instancia de esa clase, inicializada en estado persistente.
 El método load() lanzará una excepción irrecuperable si no existe la fila de base de datos
correspondiente. Si no se está seguro de que exista una fila correspondiente, debe usarse el
método get(), el cual consulta la base de datos inmediatamente y devuelve null si no
existe una fila correspondiente
 Existen dos métodos que se encargan de recuperar un objeto persistente por
identificador: load() y get(). La diferencia entre ellos radica en cómo indican que un objeto
no se encuentra en la base de datos: get() devuelve un nulo y load() lanza una
excepción ObjectNotFoundException.

HQL es completamente orientado a objetos y comprende nociones como herencia,


polimorfismo y asociación. Las consultas se escriben en HQL y Hibernate se encarga
de convertirlas al SQL usado por la base de datos con la que estemos trabajando.

Un transacción es un conjunto de órdenes que se ejecutan formando un unidad de


trabajo, en forma indivisible o atómica.

Para la gestión de transacciones en Hibernate, no se produce bloqueo de objetos en


la memoria. La aplicación puede esperar el comportamiento definido por el nivel de
aislamiento de sus transacciones de las bases de datos. Gracias a la Session, la cual
también es un caché con alcance de transacción. Para realizar con éxito la gestión de
transacciones, estas se van a basar en el uso del objeto Session.

También podría gustarte