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.