Package org.apache.cayenne.tx
Class BaseTransaction
- java.lang.Object
-
- org.apache.cayenne.tx.BaseTransaction
-
- All Implemented Interfaces:
Transaction
- Direct Known Subclasses:
CayenneTransaction
,ExternalTransaction
public abstract class BaseTransaction extends Object implements Transaction
A Cayenne transaction. Currently supports managing JDBC connections.- Since:
- 4.0
-
-
Field Summary
Fields Modifier and Type Field Description protected Map<String,Connection>
connections
protected Collection<TransactionListener>
listeners
protected int
status
protected static int
STATUS_ACTIVE
protected static int
STATUS_COMMITTED
protected static int
STATUS_COMMITTING
protected static int
STATUS_MARKED_ROLLEDBACK
protected static int
STATUS_NO_TRANSACTION
protected static int
STATUS_ROLLEDBACK
protected static int
STATUS_ROLLING_BACK
-
Constructor Summary
Constructors Modifier Constructor Description protected
BaseTransaction()
Creates new inactive transaction.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected Connection
addConnection(String connectionName, Connection connection)
void
addListener(TransactionListener listener)
void
begin()
Starts a Transaction.static void
bindThreadTransaction(Transaction transaction)
Binds a Transaction to the current thread.protected void
close()
Closes all connections associated with transaction.void
commit()
protected void
connectionAdded(Connection connection)
Map<String,Connection>
getConnections()
Returns all connections associated with the transaction.protected Connection
getExistingConnection(String name)
Connection
getOrCreateConnection(String connectionName, DataSource dataSource)
Retrieves a connection for the given symbolic name.static Transaction
getThreadTransaction()
Returns a Transaction associated with the current thread, or null if there is no such Transaction.boolean
isRollbackOnly()
protected abstract void
processCommit()
protected abstract void
processRollback()
void
rollback()
void
setRollbackOnly()
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.cayenne.tx.Transaction
isExternal
-
-
-
-
Field Detail
-
STATUS_ACTIVE
protected static final int STATUS_ACTIVE
- See Also:
- Constant Field Values
-
STATUS_COMMITTING
protected static final int STATUS_COMMITTING
- See Also:
- Constant Field Values
-
STATUS_COMMITTED
protected static final int STATUS_COMMITTED
- See Also:
- Constant Field Values
-
STATUS_ROLLEDBACK
protected static final int STATUS_ROLLEDBACK
- See Also:
- Constant Field Values
-
STATUS_ROLLING_BACK
protected static final int STATUS_ROLLING_BACK
- See Also:
- Constant Field Values
-
STATUS_NO_TRANSACTION
protected static final int STATUS_NO_TRANSACTION
- See Also:
- Constant Field Values
-
STATUS_MARKED_ROLLEDBACK
protected static final int STATUS_MARKED_ROLLEDBACK
- See Also:
- Constant Field Values
-
connections
protected Map<String,Connection> connections
-
listeners
protected Collection<TransactionListener> listeners
-
status
protected int status
-
-
Method Detail
-
bindThreadTransaction
public static void bindThreadTransaction(Transaction transaction)
Binds a Transaction to the current thread.
-
getThreadTransaction
public static Transaction getThreadTransaction()
Returns a Transaction associated with the current thread, or null if there is no such Transaction.
-
setRollbackOnly
public void setRollbackOnly()
- Specified by:
setRollbackOnly
in interfaceTransaction
-
isRollbackOnly
public boolean isRollbackOnly()
- Specified by:
isRollbackOnly
in interfaceTransaction
-
addListener
public void addListener(TransactionListener listener)
- Specified by:
addListener
in interfaceTransaction
-
begin
public void begin()
Starts a Transaction. If Transaction is not started explicitly, it will be started when the first connection is added.- Specified by:
begin
in interfaceTransaction
-
commit
public void commit()
- Specified by:
commit
in interfaceTransaction
-
processCommit
protected abstract void processCommit()
-
rollback
public void rollback()
- Specified by:
rollback
in interfaceTransaction
-
processRollback
protected abstract void processRollback()
-
getConnections
public Map<String,Connection> getConnections()
Description copied from interface:Transaction
Returns all connections associated with the transaction.- Specified by:
getConnections
in interfaceTransaction
- Returns:
- connections associated with the transaction.
-
getOrCreateConnection
public Connection getOrCreateConnection(String connectionName, DataSource dataSource) throws SQLException
Description copied from interface:Transaction
Retrieves a connection for the given symbolic name. If it does not exists, creates a new connection using provided DataSource, and registers it internally.- Specified by:
getOrCreateConnection
in interfaceTransaction
- Parameters:
connectionName
- a symbolic name of the connection. Cayenne DataNodes generate a name in the form of "DataNode.Connection.nodename".dataSource
- DataSource that provides new connections.- Returns:
- a connection that participates in the current transaction.
- Throws:
SQLException
-
getExistingConnection
protected Connection getExistingConnection(String name)
-
addConnection
protected Connection addConnection(String connectionName, Connection connection)
-
connectionAdded
protected void connectionAdded(Connection connection)
-
close
protected void close()
Closes all connections associated with transaction.
-
-