To emulate a business transaction, a program may need to perform several
steps. A financial program, for example, might transfer funds from a
checking account to a savings account by using the steps listed in the
debit checking account
credit savings account
update history log
Either all or none of the three steps must complete. Otherwise, data
integrity is lost. Because the steps within a transaction are a unified
whole, a transaction is often defined as an indivisible unit of work.
A transaction can end in two ways: with a commit or with a rollback.
When a transaction commits, the data modifications made by its
statements are saved. If a statement within a transaction fails, the
transaction rolls back, undoing the effects of all statements in the
transaction. In the pseudocode, for example, if a disk drive were to
crash during the
credit step, the transaction would roll back and undo
the data modifications made by the
debit statement. Although the
transaction fails, data integrity would be intact because the accounts
In the preceding pseudocode, the
commit statements mark
the boundaries of the transaction. When designing an enterprise bean,
you determine how the boundaries are set by specifying either
container-managed or bean-managed transactions.