Package org.hibernate.resource.transaction

Defines the resource-level transaction capabilities of Hibernate, which revolves around the TransactionCoordinator contract.

TransactionCoordinator instances can be obtained from TransactionCoordinatorBuilder, which is a Service and available from the StandardServiceRegistry

A few terms/concepts to keep in mind here...

Local transaction

The local transaction is the idea of transactionality exposed to the application (as Transaction) as a means to control the underlying transaction. That control flows from the Transaction into the TransactionCoordinator through the TransactionCoordinator.TransactionDriver it exposes.

Physical transaction

This is the physical underlying transaction that ultimately controls the database transaction. This can be:
  • a JTA transaction, as expressed by UserTransaction or Transaction)
  • a "JDBC transaction", as expressed through the JDBC Connection object
The corresponding concrete TransactionCoordinator implementations manage that bridging internally.

Local Synchronization

The Hibernate transaction api allows the application itself to register JTA Synchronization objects with the TransactionCoordinator. These local Synchronizations work in all transaction environments. See Transaction.registerSynchronization(jakarta.transaction.Synchronization) and SynchronizationRegistry for additional details.