In my service class I would like to have something like:
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;
}
}
}
Notice the commented text after the method head. I'm not so familiar with Hibernate, but I think it would be great if the service methods check if transaction exists, use it, otherwise create a new one and close it.
If it is possible, is there any performance reasons (or others) that I should have in mind? Or is it any other way to perform this kind of thing?
Best regards
lweller's answer is a more appropriate approach than my answer, but you can check the state of a transaction by calling session.getTransaction().isActive()
See the javadoc for Hibernate Transaction.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With