Package org.springframework.transaction

# Interface TransactionStatus

All Superinterfaces:
  `Flushable`, `SavepointManager`, `TransactionExecution`

All Known Implementing Classes:
  `AbstractTransactionStatus`, `DefaultTransactionStatus`, `SimpleTransactionStatus`

public interface TransactionStatus extends TransactionExecution, SavepointManager, Flushable
Representation of an ongoing `PlatformTransactionManager` transaction. Extends the common `TransactionExecution` interface.

Transactional code can use this to retrieve status information, and to programmatically request a rollback (instead of throwing an exception that causes an implicit rollback).

Includes the `SavepointManager` interface to provide access to savepoint management facilities. Note that savepoint management is only available if supported by the underlying transaction manager.

Since:
  27.03.2003
Author:
  Juergen Hoeller
See Also:
  - `TransactionExecution.setRollbackOnly()`
  - `PlatformTransactionManager.getTransaction(org.springframework.transaction.TransactionDefinition)`
  - `TransactionCallback.doInTransaction(org.springframework.transaction.TransactionStatus)`
  - `TransactionAspectSupport.currentTransactionStatus()`

## Method Summary

Modifier and Type
Method
Description
`default void`
`flush()`
Flush the underlying session to the datastore, if applicable: for example, all affected Hibernate/JPA sessions.
`default boolean`
`hasSavepoint()`
Return whether this transaction internally carries a savepoint, that is, has been created as nested transaction based on a savepoint.

### Methods inherited from interface org.springframework.transaction.SavepointManager

`createSavepoint, releaseSavepoint, rollbackToSavepoint`

### Methods inherited from interface org.springframework.transaction.TransactionExecution

`getTransactionName, hasTransaction, isCompleted, isNested, isNewTransaction, isReadOnly, isRollbackOnly, setRollbackOnly`

## Method Details

### hasSavepoint

default boolean hasSavepoint()
Return whether this transaction internally carries a savepoint, that is, has been created as nested transaction based on a savepoint.

This method is mainly here for diagnostic purposes, alongside `TransactionExecution.isNewTransaction()`. For programmatic handling of custom savepoints, use the operations provided by `SavepointManager`.

The default implementation returns `false`.

See Also:
  - `TransactionExecution.isNewTransaction()`
  - `SavepointManager.createSavepoint()`
  - `SavepointManager.rollbackToSavepoint(Object)`
  - `SavepointManager.releaseSavepoint(Object)`

### flush

default void flush()
Flush the underlying session to the datastore, if applicable: for example, all affected Hibernate/JPA sessions.

This is effectively just a hint and may be a no-op if the underlying transaction manager does not have a flush concept. A flush signal may get applied to the primary resource or to transaction synchronizations, depending on the underlying resource.

The default implementation is empty, considering flush as a no-op.

Specified by:
  `flush` in interface `Flushable`