begin transaction
debit checking account
credit savings account
update history log
commit transaction
Java Platform, Enterprise Edition (Java EE) 8 Учебник по Java EE |
Назад | Вперёд | Содержание |
Для эмуляции бизнес-транзакции программе может потребоваться выполнить несколько шагов. Например, финансовая программа может переводить средства с текущего счёта на сберегательный счёт, используя шаги, перечисленные в следующем псевдокоде:
begin transaction
debit checking account
credit savings account
update history log
commit transaction
Либо все шаги должны быть выполнены, либо ни один из них. В противном случае целостность данных теряется. Поскольку шаги внутри транзакции представляют собой единое целое, транзакция часто определяется как атомарная операция.
Транзакция может закончиться двумя способами: фиксацией или с откатом. Когда транзакция фиксируется, изменения данных, сделанные входящими в неё операторами, сохраняются. Если один из операторов транзакции завершается неудачей, транзакция откатывается, отменяя действие всех операторов в транзакции. Например, в псевдокоде, если во время шага credit
произошел сбой в работе с жёстким диском, транзакция откатится и отменит изменения данных, сделанные на шаге debit
. Несмотря на то, что транзакция не удалась, целостность данных не пострадает, поскольку счета всё ещё сбалансированы.
В предыдущем псевдокоде операторы begin
и commit
отмечают границы транзакции. При разработке Enterprise-бина вы определяете, как устанавливаются границы, указывая транзакции, управляемые контейнером или управляемые компонентом.
Назад | Вперёд | Содержание |