M3-UF2 PERSISTENCIA CON HIBERNATE
UNIDAD 6: Transacciones, concurrencia y cacheo
eugeniaperez.es
UNIDAD 6: TRANSACCIONES, CONCURRENCIA Y CACHEO
eugeniaperez.es
6.1 Gestión de bloqueos
Hibernate usa conexiones JDBC
SessionFactory:
- Seguro entre hilos
- Costoso de crear (todos los hilos lo comparten)
- Se crea una sola vez a partir del objeto Configuration
UNIDAD 6: TRANSACCIONES, CONCURRENCIA Y CACHEO
eugeniaperez.es
6.1 Gestión de bloqueos
Session:
- Bajo coste de creación
- Inseguro entre hilos
- Se crea una vez y se descarta
Transacción
- Debe ser tan corta como sea posible para reducir bloqueos
UNIDAD 6: TRANSACCIONES, CONCURRENCIA Y CACHEO
eugeniaperez.es
6.1 Gestión de bloqueos
Unidad de trabajo:
- Patrón de diseño (Martin Fowler)
- Coordina la escritura de los cambios acontecidos para que se persistan juntos
- No usar sesión por operación contra BDD
- Lo más común es usar sesión por petición (cliente/servidor)
- No es necesario invocar flush()
UNIDAD 6: TRANSACCIONES, CONCURRENCIA Y CACHEO
eugeniaperez.es
6.1 Gestión de bloqueos
try {
factory.getCurrentSession().beginTransaction();
// do some work
...
factory.getCurrentSession().getTransaction().commit();
}
catch (RuntimeException e) {
factory.getCurrentSession().getTransaction().rollback();
throw e; // or display error message
} finally{
factory.getCurrentSession.close();
}
UNIDAD 6: TRANSACCIONES, CONCURRENCIA Y CACHEO
eugeniaperez.es
6.1 Gestión de bloqueos
Manejo de excepciones:
- Si la Session lanza una excepción:
- Deshacer la transacción
- Session.close() -> dentro de un finally
UNIDAD 6: TRANSACCIONES, CONCURRENCIA Y CACHEO
eugeniaperez.es
6.2 Arquitectura de caché del ORM
Podemos utilizar distintas implementaciones de caché
- org.hibernate.cache.CacheProvider
- Propiedad hibernate.cache.provider_class
- Hashtable es el más básico
Unidad 6
By eugenia_perez
Unidad 6
- 993