Nella mia classe di servizio Mi piacerebbe avere qualcosa di simile:Hibernate transazione attiva
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;
}
}
}
Avviso del testo commentato dopo la testa metodo. Non sono così familiare con Hibernate, ma penso che sarebbe bello se i metodi di servizio controllassero se esiste una transazione, usarla, altrimenti crearne una nuova e chiuderla.
Se è possibile, ci sono motivi di prestazioni (o altri) che dovrei avere in mente? O è un altro modo per eseguire questo genere di cose?
migliori saluti
Penso che session.getTransaction() restituisca sicuramente sempre una transazione attiva ... Quindi non funziona per me (atlest) .... c'è qualche altra soluzione? –