com.ibatis.sqlmap.client

Interface SqlMapTransactionManager

public interface SqlMapTransactionManager

This interface declares methods for demarcating SQL Map transactions.

See Also: SqlMapSession SqlMapClient

Method Summary
voidcommitTransaction()
Commits the currently started transaction.
voidendTransaction()
Ends a transaction and rolls back if necessary.
ConnectiongetCurrentConnection()
Returns the current connection in use.
DataSourcegetDataSource()
Returns the DataSource instance currently being used by the SqlMapSession.
ConnectiongetUserConnection()
Returns the current user supplied connection as set by setUserConnection().
voidsetUserConnection(Connection connnection)
Allows the developer to easily use an externally supplied connection when executing statements.
voidstartTransaction()
Demarcates the beginning of a transaction scope.
voidstartTransaction(int transactionIsolation)
Demarcates the beginning of a transaction scope using the specified transaction isolation.

Method Detail

commitTransaction

public void commitTransaction()
Commits the currently started transaction.

Throws: SQLException If an error occurs while committing the transaction, or the transaction could not be committed.

endTransaction

public void endTransaction()
Ends a transaction and rolls back if necessary. If the transaction has been started, but not committed, it will be rolled back upon calling endTransaction().

Throws: SQLException If an error occurs during rollback or the transaction could not be ended.

getCurrentConnection

public Connection getCurrentConnection()
Returns the current connection in use. If no connection exists null will be returned. There may be no connection if no transaction has been started, and if no user provided connection has been set.

Returns: The current connection or null.

Throws: SQLException

getDataSource

public DataSource getDataSource()
Returns the DataSource instance currently being used by the SqlMapSession.

Returns: The DataSource instance currently being used by the SqlMapSession.

getUserConnection

public Connection getUserConnection()

Deprecated: Use getCurrentConnection() instead.

Returns the current user supplied connection as set by setUserConnection().

TODO : DEPRECATED

Returns: The current user supplied connection.

Throws: SQLException

setUserConnection

public void setUserConnection(Connection connnection)
Allows the developer to easily use an externally supplied connection when executing statements.

Important: Using a user supplied connection basically sidesteps the transaction manager, so you are responsible for appropriately. Here's a (very) simple example (throws SQLException):

 try {
   Connection connection = dataSource.getConnection();
   sqlMap.setUserConnection(connection);
   // do work
   connection.commit();
 } catch (SQLException e) {
     try {
       if (connection != null) commit.rollback();
     } catch (SQLException ignored) {
       // generally ignored
     }
     throw e;  // rethrow the exception
 } finally {
   try {
     if (connection != null) connection.close();
   } catch (SQLException ignored) {
     // generally ignored
   }
 }
 

Parameters: connnection

Throws: SQLException

startTransaction

public void startTransaction()
Demarcates the beginning of a transaction scope. Transactions must be properly committed or rolled back to be effective. Use the following pattern when working with transactions:
 try {
   sqlMap.startTransaction();
   // do work
   sqlMap.commitTransaction();
 } finally {
   sqlMap.endTransaction();
 }
 

Always call endTransaction() once startTransaction() has been called.

Throws: java.sql.SQLException If an error occurs while starting the transaction, or the transaction could not be started.

startTransaction

public void startTransaction(int transactionIsolation)
Demarcates the beginning of a transaction scope using the specified transaction isolation. Transactions must be properly committed or rolled back to be effective. Use the following pattern when working with transactions:
 try {
   sqlMap.startTransaction(Connection.TRANSACTION_REPEATABLE_READ);
   // do work
   sqlMap.commitTransaction();
 } finally {
   sqlMap.endTransaction();
 }
 

Always call endTransaction() once startTransaction() has been called.

Throws: java.sql.SQLException If an error occurs while starting the transaction, or the transaction could not be started.

Copyright © 2011. All Rights Reserved.