Hibernate Gestion Objetos
Hibernate
Gestión de objetos persistentes
2
Juan Ramón López Rodríguez
Este material ha sido elaborado como soporte a la docencia de la materia “Integración
de datos” del Grado en Ingeniería Informática de la Universidade da Coruña.
La base para la elaboración de este material ha sido el documento “Object/Relational
Mapping with Hibernate. Basic tutorial” de V. Souza (ver bibliografía)Esta obra está bajo una licencia de Creative Commons Reconocimiento-NoComercialCompartirIgual 3.0 Unported.
3
Bibliografía
• Bauer, C.; King, G. (2005) “Hibernate in Action“- Manning Publications Co.
ISBN 1932394-15-X
• Souza, V. (2007). “Object/Relational Mapping with Hibernate. Basic
tutorial”. http://www.inf.ufes.br/~vitorsouza/wp-content/uploads/javaen-tutorial-hibernate-slides.pdf
•“Hibernate tutorial”. http://www.tutorialspoint.com/hibernate/
• “Hibernate Documentation” Jboss Community.
http://www.hibernate.org/docs
4
1. Introducción.
5
Objetos persistentes
• Hibernate: persistencia no intrusiva
▫ Objetos no saben si son persistentes
▫ Se comportan igual con persistencia o sin ella
▫ La aplicación los manipula de forma natural
• ¿Quién los hace persistentes?
▫ La aplicación.Debe usar interfaces de Hibernate para almacenar o
cargar objetos
▫ Gestor de persistencia: la clase Session de Hibernate
6
Ciclo de vida de la persistencia
• Un objeto pasa por diferentes estados a lo largo de su ciclo de vida
get()
load()
Query.list()
Query.iterate()
Garbage collector
Transitorio
new()
save()
saveOrUpdate ()
Persistente
evict()
close ()
Eliminado
Garbage collectordelete()
update()
saveOrUpdate ()
Garbage collector
Desligado
7
Estado Transitorio (Transient)
• Los objetos no son persistentes cuando se crean con el operador new
▫ Su estado no se almacena en ninguna BD
▫ Su estado se pierde (garbage collector) cuando dejan de ser
referenciados por cualquier otro objeto (o cuando se termina la
aplicación)
• Para pasar a estado persistente:
▫ Llamada algestor de persistencia (Session)
▫ Referencia desde algún otro objeto persistente
8
Estado Persistente (Persistent)
• Objeto con identidad persistente: id que es PK en la BD
• Puede ser:
▫ Nuevo objeto, vinculado al gestor de persistencia
▫ Nuevo objeto, asociado a otro objeto persistente
▫ Objeto recuperado desde la BD
• Vinculado a objeto Session, que proporciona un contexto de persistencia
▫ Enla caché de Hibernate
▫ Cambios en su estado son monitorizados y propagados a la BD (sincronización)
▫ Opción de rollback si fuese necesario (aunque sólo sobre la BD)
9
Estado Desligado (Detached)
• Si una sesión termina, los objetos asociados siguen en memoria, pero
pasan al estado desligado
• Un objeto también se pude desligar explícitamente de una sesión
• Si el objeto no fue borradoexplícitamente, su estado continúa
almacenado en la BD…
• …pero las instancias en memoria ahora hacen “vida independiente”
Sin contexto de persistencia, cambios en su estado ya no son sincronizados con la BD.
• Es posible “recuperar” esos objetos asociándolos a una sesión posterior.
Una conversación es una secuencia de sesiones que “comparten” objetos
persistentes
10
Estado Borrado (Removed)
•Cuando un objeto ya no va a ser utilizado más
• Se eliminan todas las referencias al objeto
• Se le pide a la sesión que se deshaga de él
• La sesión se encargará, en algún momento, de eliminar su estado de la BD
(de forma permanente)
11
2. La sesión.
12
Definición
• Una sesión de Hibernate se puede ver como una conexión contra la BD,
que engloba una o varias transacciones físicas (ej.transacciones JDBC)
• Hibernate utiliza la clase Session como metáfora de la sesión para
proporcionar funcionalidades y servicios de persistencia
• Cada instancia de Session se crea a través de SessionFactory
▫ SessionFactory es una clase pesada: una instancia por aplicación y BD
▫ Session es una clase ligera: podemos crear todas las instancias que necesitemos
13
Funciones
• La clase Session...
Regístrate para leer el documento completo.