Can this method be improved?:
public static Session getHibernateSession() throws SQLException{
synchronized(dbSessionMutex){
if(session == null || !session.isOpen()){
session = HibernateUtil.getSessionFactory().openSession();
}
else{
final SessionFactoryImplementor sessionFactoryImplementation = (SessionFactoryImplementor) session.getSessionFactory();
final ConnectionProvider connectionProvider = sessionFactoryImplementation.getConnectionProvider();
try{
final Connection conn = connectionProvider.getConnection();
if(conn.isClosed()){
session.close();
session = HibernateUtil.getSessionFactory().openSession();
}
else{
conn.close();
}
}
catch(Exception e){
LOGGER.error("Exception: ", e);
session.close();
session = HibernateUtil.getSessionFactory().openSession();
}
}
}
return session;
}