Package org.hibernate

Interface Transaction

All Superinterfaces:
EntityTransaction
All Known Subinterfaces:
TransactionImplementor
All Known Implementing Classes:
TransactionImpl

public interface Transaction extends EntityTransaction
Represents a resource-local transaction, where resource-local is interpreted by Hibernate to mean any transaction under the control of Hibernate. That is to say, the underlying transaction might be a JTA transaction, or it might be a JDBC transaction, depending on how Hibernate is configured.

Every resource-local transaction is associated with a Session and begins with an explicit call to SharedSessionContract.beginTransaction(), or, almost equivalently, with session.getTransaction().begin(), and ends with a call to EntityTransaction.commit() or EntityTransaction.rollback().

A single session might span multiple transactions since the notion of a session (a conversation between the application and the datastore) is of coarser granularity than the concept of a database transaction. However, there is at most one uncommitted transaction associated with a given Session at any time.

Note that this interface is never used to control container managed JTA transactions, and is not usually used to control transactions that affect multiple resources.

A Transaction object is not threadsafe.

See Also:
API Note:
JPA doesn't allow an EntityTransaction to represent a JTA transaction. But when strict JPA transaction compliance is disabled, as it is by default, Hibernate allows an instance of this interface to represent the current JTA transaction context.
  • Method Details

    • getStatus

      TransactionStatus getStatus()
      Get the current status of this transaction.
    • registerSynchronization

      void registerSynchronization(Synchronization synchronization)
      Register a user synchronization callback for this transaction.
      Parameters:
      synchronization - The Synchronization callback to register.
      Throws:
      HibernateException - Indicates a problem registering the synchronization.
    • setTimeout

      void setTimeout(int seconds)
      Set the transaction timeout for any transaction started by any subsequent call to EntityTransaction.begin() on this instance.
      Parameters:
      seconds - The number of seconds before a timeout.
    • getTimeout

      @Nullable Integer getTimeout()
      Retrieve the transaction timeout set for this instance. A negative integer indicates that no timeout has been set.
      Specified by:
      getTimeout in interface EntityTransaction
      Returns:
      The timeout, in seconds.
    • markRollbackOnly

      void markRollbackOnly()
      Attempt to mark the underlying transaction for rollback only.

      Unlike EntityTransaction.setRollbackOnly(), which is specified by JPA to throw when the transaction is inactive, this operation may be called on an inactive transaction, in which case it has no effect.

      See Also: