С
Завис на этом примере:
Если мы получаем сессию (к примеру, через
getCurrentSession()
), транзакцию (session.beginTransaction()
), проделываем модификации (save()
), но в конце не выполняем ни commit
, ни rollback
, то чего ожидать после закрытия сессии? Автоматический роллбэк? Какое-то другое поведение? Как это повлияет на базу данных? На данные, что были изменены?Нашёл ответ на stackoverflow о том, что всё зависит от соединения, но как-то размыто. Не понятно, какие существуют гарантии, что произойдёт с данными и транзакцией, ещё и после закрытия соединения.
Возможно, действия, сделанные в закрытой сессии, как-то flush-нутся вместе с новой?
Принимаю броски тапками - в теории пока что плыву.
UPD: с hibernate.atlassian.net: Closing a session without rollback or commit may cause the uncommitted changes to be committed.
Если принудительно закрыть первую сессию и открыть вторую, то изменения, сделаны в первой, могут комминуться или ролл-бэкнуться вместе со второй. А это уже нарушение ACID.
И вообще, видимо, всё зависит от БД и менеджера подключений.