W mojej klasie usług Chciałbym mieć coś takiego:aktywna transakcja Hibernate
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;
}
}
}
obwieszczeniu skomentował tekst po głowie metody. Nie jestem zaznajomiony z Hibernate, ale myślę, że byłoby wspaniale, gdyby metody serwisowe sprawdzały, czy transakcja istnieje, użyj jej, w przeciwnym razie utwórz nową i zamknij.
Jeśli to możliwe, czy są jakieś powody wydajności (lub inne), o których powinienem pamiętać? Czy jest to jakikolwiek inny sposób na wykonanie tego rodzaju rzeczy?
poważaniem
Myślę, że session.getTransaction() z pewnością zawsze zwraca aktywną transakcję ... Więc nie działa dla mnie (atlest) .... czy istnieje jakieś inne rozwiązanie? –