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-бина вы определяете, как устанавливаются границы, указывая транзакции, управляемые контейнером или управляемые компонентом.
| Назад | Вперёд | Содержание |
Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены.
Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)