# Interface Transaction

All Known Implementing Classes:
  `BaseTransaction, CayenneTransaction, ExternalTransaction, ReadOnlyTransaction`

public interface Transaction
Cayenne Transaction interface.

Since:
  4.0

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addListener(TransactionListener listener)`
  `void`
  `begin()`
  Starts a Transaction.
  `void`
  `commit()`
  `Map<String, Connection>`
  `getConnections()`
  Returns all connections associated with the transaction.
  `Connection`
  `getOrCreateConnection(String connectionName, DataSource dataSource)`
  Retrieves a connection for the given symbolic name.
  `boolean`
  `isExternal()`
  Is this transaction managed by external transaction manager
  `boolean`
  `isRollbackOnly()`
  `void`
  `rollback()`
  `void`
  `setRollbackOnly()`

- ## Method Details

  - ### begin

    void begin()
    Starts a Transaction. If Transaction is not started explicitly, it will be started when the first connection is added.

  - ### commit

    void commit()

  - ### rollback

    void rollback()

  - ### setRollbackOnly

    void setRollbackOnly()

  - ### isRollbackOnly

    boolean isRollbackOnly()

  - ### getOrCreateConnection

    Connection getOrCreateConnection(String connectionName, DataSource dataSource) throws SQLException
    Retrieves a connection for the given symbolic name. If it does not exists, creates a new connection using provided DataSource, and registers it internally.
    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`

  - ### getConnections

    Map<String, Connection> getConnections()
    Returns all connections associated with the transaction.
    Returns:
      connections associated with the transaction.

  - ### addListener

    void addListener(TransactionListener listener)

  - ### isExternal

    boolean isExternal()
    Is this transaction managed by external transaction manager