En mi clase de servicio me gustaría tener algo como:Hibernate transacción activa
class ClientService {
// Authorize
// Returns true: Authorization successful
// Returns false: Authorization failed
public boolean authorize(String id, String password) {
//Here I would like to check if an active transaction exists.
//If it exists, use that one, else create a new session and start
//a new transaction.
//For example:
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
if(!session.SOMEMETHOD_CHECK_IF_TRANSACTION_IS_ACTIVE) {
session.beginTransaction();
}
Client client = clientDAO.get(id);
if (client != null) {
if (client.getPassword().equals(password)) {
logger.debug("Authorization successful. ID: " + client.getId() + ", password: " + client.getPassword());
return true;
} else {
logger.error("Authorization unsuccessful");
return false;
} else {
logger.debug("Authorization unsuccessful. No client exists with ID: " + id);
return false;
}
}
}
Aviso del texto comentado después del cabezal método. No estoy tan familiarizado con Hibernate, pero creo que sería genial si los métodos de servicio comprueban si existe transacción, úsala, de lo contrario crea una nueva y ciérrala.
Si es posible, ¿hay algún motivo de rendimiento (u otros) que deba tener en cuenta? ¿O es de otra manera realizar este tipo de cosas?
Saludos
Creo que session.getTransaction() seguramente devuelve siempre una transacción activa ... Así que no funciona para mí (atlest) .... ¿hay alguna otra solución? –