В моем классе обслуживания я хотел бы иметь что-то вроде:
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;
}
}
}
Обратите внимание на закомментированный текст после заголовка метода.Я не очень знаком с Hibernate, но я думаю, что было бы здорово, если бы сервисные методы проверяли, существует ли транзакция, используют ли ее, в противном случае создайте новую и закройте ее.
Если это возможно, есть ликакие-либо причины производительности (или другие), которые я должен иметь в виду?Или это какой-то другой способ выполнения таких вещей?
С уважением