/* * This software is distributed under the terms of the FSF * Gnu Lesser General Public License (see lgpl.txt). * * This program is distributed WITHOUT ANY WARRANTY. See the * GNU General Public License for more details. */ package com.scooterframework.transaction; import com.scooterframework.orm.sqldataexpress.connection.DatabaseConnectionContext; import com.scooterframework.orm.sqldataexpress.connection.UserDatabaseConnection; /** * Transaction interface provides methods for managing transaction boundaries. * * @author (Fei) John Chen */ public interface Transaction { public static final String CMT_TRANSACTION_TYPE = "CMT"; public static final String JDBC_TRANSACTION_TYPE = "JDBC"; public static final String JTA_TRANSACTION_TYPE = "JTA"; public static final String USER_TRANSACTION_JNDI_STRING = "java:comp/UserTransaction"; /** * Release all resources managed by this transaction. * * This method should always be called at the end of a transaction block. */ public void releaseResources(); /** * Start a transaction. */ public void begin(); /** * Commit a transaction. */ public void commit(); /** * Rollback a transaction. */ public void rollback(); /** * Check if transaction has started. */ public boolean isTransactionStarted(); /** * Check if transaction has ended. */ public boolean isTransactionEnded(); /** * Return a connection to the database * * @return UserDatabaseConnection */ public UserDatabaseConnection getConnection(); /** * Return a connection to the database * * @param connectionName name of a connection * @return UserDatabaseConnection */ public UserDatabaseConnection getConnection(String connectionName); /** * Return a connection based on connection context * * @param dcc An DatanaseConnectionContext object * @return Connection */ public UserDatabaseConnection getConnection(DatabaseConnectionContext dcc); }