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-бина вы определяете, как устанавливаются границы, указывая транзакции, управляемые контейнером или управляемые компонентом.


Назад Вперёд Содержание
Логотип Oracle  Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены. Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)