Interface CDOUserTransaction

All Superinterfaces:
CDORollbackable
All Known Subinterfaces:
CDOFileTransaction, CDONestedTransaction, CDOTransaction, CDOXATransaction, DelegatingCDOTransaction, InternalCDOTransaction, InternalCDOUserTransaction, InternalCDOXATransaction
All Known Implementing Classes:
CDOPushTransaction

public interface CDOUserTransaction extends CDORollbackable
Provides functionality that is common to both single transactions and distributed (XA) transactions.
Since:
2.0
Author:
Simon McDuff
No Implement
This interface is not intended to be implemented by clients.
No Extend
This interface is not intended to be extended by clients.
  • Method Details

    • commit

      Same as commit(null).
      Throws:
      ConcurrentAccessException
      CommitException
      Since:
      3.0
    • commit

      Commits the modifications of this transaction to the repository and returns a commit info object if successful.

      Various kinds of problems can cause the commit to fail and not all of them can be avoided by acquiring pessimistic locks on the modified objects. In particular you must expect and handle containment cycle exceptions. The following example shows how write robust transactions:

          CDOTransaction transaction = null;
      
          try
          {
            transaction = session.openTransaction();
      
            for (;;)
            {
              transaction.getViewLock().lock();
      
              try
              {
                CDOResource resource = transaction.getResource("/stock/resource1");
      
                // Modify the model here...
      
                transaction.commit();
                break;
              }
              catch (ConcurrentAccessException ex)
              {
                transaction.rollback();
              }
              catch (CommitException ex)
              {
                throw ex.wrap();
              }
              finally
              {
                transaction.getViewLock().unlock();
              }
            }
          }
          finally
          {
            if (transaction != null)
            {
              transaction.close();
            }
          }
       
      Note that the transaction stays functional after a any call to the commit() methods. If the transaction is not closed after a commit it can be used to apply additional modifications to the model.
      Throws:
      ConcurrentAccessException
      CommitException
      Since:
      3.0
    • rollback

      void rollback()
      Rolls back all uncommitted changes in this transaction.
      Specified by:
      rollback in interface CDORollbackable
    • setSavepoint

      CDOUserSavepoint setSavepoint()
      Creates a save point in the CDOTransaction that can be used to roll back a part of the transaction

      Save points do not involve the server side, everything is done on the client side.

      Since:
      3.0
    • getLastSavepoint

      CDOUserSavepoint getLastSavepoint()
      Returns the most recently created savepoint.
      Returns:
      the last savepoint, or null if none exists.
      Since:
      3.0