Первоначальной целью было закрыть сеанс, даже если метод rollback () выдает исключение, но это решение недостаточно хорошо.
Если roolback создает исключение RuntimeException, код закрытия никогда не будет вызываться
Вы должны сделать следующее:
protected void rollback() {
try {
getSession().getTransaction().rollback();
} catch (HibernateException e) {
// TODO change to log
System.out.println(e);
} finally {
try {
getSession().close();
} catch (HibernateException e) {
// TODO change to log
System.out.println(e);
}
}
}
Это гарантирует, что код закрытия будет вызываться независимо от того, что.