В настоящее время я читаю документацию Hibernate, и я наткнулся на следующую цитату:
Если сеанс вызывает исключение, включая любое SQLException, немедленно откат транзакции базы данных, вызовите Session.close() и отмените экземпляр сеанса. Некоторые методы сеанса не оставляют сеанс в согласованном состоянии. Никакое исключение, вызванное Hibernate, не может рассматриваться как подлежащее восстановлению. Убедитесь, что сессия будет закрыта вызовом функции close() в блоке finally.
Все это имеет смысл, насколько мне известно, но меня заставляет задуматься, что эффект закрытия сеанса происходит с транзакцией, которая не была зафиксирована и не откатна?
Например, рассмотрим следующее:
session = getSessionFactory().openSession();
session.beginTransaction();
session.save(carObject);
//session.getTransaction().commit();
session.close();
С фиксацией комментирования и отсутствием отката здесь, каково ожидаемое поведение session.close()? Это просто откат, который совершает автоматически, оставляет ли он "вешающую" транзакцию? и др.
(Я понимаю, что это, очевидно, не было бы хорошей практикой - я просто пытаюсь немного осветить основные концепции).