type=page
status=published
title=What Is a Transaction?
next=transactions004.html
prev=transactions002.html
~~~~~~
What Is a Transaction?
======================

[[BNCII]]

[[what-is-a-transaction]]
What Is a Transaction?
----------------------

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
following pseudocode:

[source,oac_no_warn]
----
begin transaction
    debit checking account
    credit savings account
    update history log
commit transaction
----

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
still balance.

In the preceding pseudocode, the `begin` and `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.


