Hibernate Mapeo
Hibernate Mapeo
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.
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>
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>
<mapping resource="Usuario.hbm.xml"/>
Moderada (depende de
Alta (tipos variados y Alta (tres estrategias
Flexibilidad las relaciones
configurables) de mapeo)
existentes)
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.
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.
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.