background image

JDBC or JTA transactions

<< Bean-Managed Transactions | Transaction Timeouts >>
<< Bean-Managed Transactions | Transaction Timeouts >>

JDBC or JTA transactions

update table-c
commit transaction
When coding a application-managed transaction for session or message-driven beans, you
must decide whether to use JDBC or JTA transactions. The sections that follow discuss both
types of transactions.
JTA Transactions
JTA is the abbreviation for the Java Transaction API. This API allows you to demarcate
transactions in a manner that is independent of the transaction manager implementation. The
Application Server implements the transaction manager with the Java Transaction Service
(JTS). But your code doesn't call the JTS methods directly. Instead, it invokes the JTA methods,
which then call the lower-level JTS routines.
A JTA transaction is controlled by the Java EE transaction manager. You may want to use a JTA
transaction because it can span updates to multiple databases from different vendors. A
particular DBMS's transaction manager may not work with heterogeneous databases. However,
the Java EE transaction manager does have one limitation: it does not support nested
transactions. In other words, it cannot start a transaction for an instance until the preceding
transaction has ended.
To demarcate a JTA transaction, you invoke the begin, commit, and rollback methods of the
javax.transaction.UserTransaction
interface.
Returning without Committing
In a stateless session bean with bean-managed transactions, a business method must commit or
roll back a transaction before returning. However, a stateful session bean does not have this
restriction.
In a stateful session bean with a JTA transaction, the association between the bean instance and
the transaction is retained across multiple client calls. Even if each business method called by
the client opens and closes the database connection, the association is retained until the
instance completes the transaction.
In a stateful session bean with a JDBC transaction, the JDBC connection retains the association
between the bean instance and the transaction across multiple calls. If the connection is closed,
the association is not retained.
Bean-Managed Transactions
The Java EE 5 Tutorial · September 2007
1004