org.springframework.jdbc.support.lob

## Class SpringLobCreatorSynchronization

- java.lang.Object
- - org.springframework.transaction.support.TransactionSynchronizationAdapter
  - - org.springframework.jdbc.support.lob.SpringLobCreatorSynchronization

- All Implemented Interfaces:
    Ordered, TransactionSynchronization

      public class SpringLobCreatorSynchronization
      extends TransactionSynchronizationAdapter

  Callback for resource cleanup at the end of a Spring transaction. Invokes `LobCreator.close()` to clean up temporary LOBs that might have been created.
  Since:
    2.0
  Author:
    Juergen Hoeller
  See Also:
    `LobCreator.close()`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `LOB_CREATOR_SYNCHRONIZATION_ORDER` Order value for TransactionSynchronization objects that clean up LobCreators.

    - ### Fields inherited from interface org.springframework.transaction.support.TransactionSynchronization

      `STATUS_COMMITTED, STATUS_ROLLED_BACK, STATUS_UNKNOWN`

    - ### Fields inherited from interface org.springframework.core.Ordered

      `HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `SpringLobCreatorSynchronization(LobCreator lobCreator)` Create a SpringLobCreatorSynchronization for the given LobCreator.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `afterCompletion(int status)` Invoked after transaction commit/rollback.
    `void` | `beforeCompletion()` Invoked before transaction commit/rollback.
    `int` | `getOrder()` Return the order value of this object, with a higher value meaning greater in terms of sorting.

    - ### Methods inherited from class org.springframework.transaction.support.TransactionSynchronizationAdapter

      `afterCommit, beforeCommit, flush, resume, suspend`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### LOB_CREATOR_SYNCHRONIZATION_ORDER

          public static final int LOB_CREATOR_SYNCHRONIZATION_ORDER

      Order value for TransactionSynchronization objects that clean up LobCreators. Return CONNECTION_SYNCHRONIZATION_ORDER - 200 to execute LobCreator cleanup before Hibernate Session (- 100) and JDBC Connection cleanup, if any.
      See Also:
        `DataSourceUtils.CONNECTION_SYNCHRONIZATION_ORDER`, Constant Field Values

  - ### Constructor Detail

    - #### SpringLobCreatorSynchronization

          public SpringLobCreatorSynchronization(LobCreator lobCreator)

      Create a SpringLobCreatorSynchronization for the given LobCreator.
      Parameters:
        `lobCreator` - the LobCreator to close after transaction completion

  - ### Method Detail

    - #### getOrder

          public int getOrder()

      Description copied from interface: `Ordered`
      Return the order value of this object, with a higher value meaning greater in terms of sorting.

      Normally starting with 0, with `Integer.MAX_VALUE` indicating the greatest value. Same order values will result in arbitrary positions for the affected objects.

      Higher values can be interpreted as lower priority. As a consequence, the object with the lowest value has highest priority (somewhat analogous to Servlet "load-on-startup" values).

      Specified by:
        `getOrder` in interface `Ordered`
      Overrides:
        `getOrder` in class `TransactionSynchronizationAdapter`
      Returns:
        the order value

    - #### beforeCompletion

          public void beforeCompletion()

      Description copied from interface: `TransactionSynchronization`
      Invoked before transaction commit/rollback. Can perform resource cleanup before transaction completion.

      This method will be invoked after `beforeCommit`, even when `beforeCommit` threw an exception. This callback allows for closing resources before transaction completion, for any outcome.

      Specified by:
        `beforeCompletion` in interface `TransactionSynchronization`
      Overrides:
        `beforeCompletion` in class `TransactionSynchronizationAdapter`
      See Also:
        `TransactionSynchronization.beforeCommit(boolean)`, `TransactionSynchronization.afterCompletion(int)`

    - #### afterCompletion

          public void afterCompletion(int status)

      Description copied from interface: `TransactionSynchronization`
      Invoked after transaction commit/rollback. Can perform resource cleanup after transaction completion.

      NOTE: The transaction will have been committed or rolled back already, but the transactional resources might still be active and accessible. As a consequence, any data access code triggered at this point will still "participate" in the original transaction, allowing to perform some cleanup (with no commit following anymore!), unless it explicitly declares that it needs to run in a separate transaction. Hence: Use `PROPAGATION_REQUIRES_NEW` for any transactional operation that is called from here.

      Specified by:
        `afterCompletion` in interface `TransactionSynchronization`
      Overrides:
        `afterCompletion` in class `TransactionSynchronizationAdapter`
      Parameters:
        `status` - completion status according to the `STATUS_*` constants
      See Also:
        `TransactionSynchronization.STATUS_COMMITTED`, `TransactionSynchronization.STATUS_ROLLED_BACK`, `TransactionSynchronization.STATUS_UNKNOWN`, `TransactionSynchronization.beforeCompletion()`