Транзакции (свойство Atomicity) в EJB 3 применяются только к операциям базы данных - я прав?
-
01-10-2019 - |
Вопрос
Я знаю, что транзакции могут быть использованы для доставки атомности.
Как если methodOne()
methodTwo()
methodThree()
Клубиются в одну транзакцию, если какой-либо из методов не удается, вся операция откатывается назад. Откат будет приведет к откату на уровне базы данных и в результате база данных будет доведена до состояния, как было до транзакции.
Решение
Транзакции (свойство Atomicity) в EJB 3 применяются только к операциям базы данных - я прав?
Нет, ты не. Транзакции применяются к транзакционные ресурсы, Спецификация Java EE распознавая три типа транзакционных ресурсов: базы данных JDBC, JMS-адресации и «другие транзакционные услуги, доступные через JCA».
Но что, если методы внесли изменения в государственные переменные или статические переменные или написали некоторые файлы в файловой системе?
Это не транзакционные ресурсы (если вы не пишете в файловую систему через разъем JCA для позже).
Другие советы
Ресурсы файловой системы не являются транзакционными. Так что вам придется откатывать ваши изменения обратно. Или вам придется посмотреть адаптеры ресурсов файловых систем, предоставляемые контейнерами.