Class ConnectionHolder

java.lang.Object
org.springframework.transaction.support.ResourceHolderSupport
org.springframework.jdbc.datasource.ConnectionHolder
All Implemented Interfaces:
ResourceHolder

public class ConnectionHolder extends ResourceHolderSupport
Resource holder wrapping a JDBC Connection. DataSourceTransactionManager binds instances of this class to the thread, for a specific DataSource.

Inherits rollback-only support for nested JDBC transactions and reference count functionality from the base class.

Note: This is an SPI class, not intended to be used by applications.

Since:
06.05.2003
Author:
Juergen Hoeller
See Also:
  • Field Details

  • Constructor Details

    • ConnectionHolder

      public ConnectionHolder(ConnectionHandle connectionHandle)
      Create a new ConnectionHolder for the given ConnectionHandle.
      Parameters:
      connectionHandle - the ConnectionHandle to hold
    • ConnectionHolder

      public ConnectionHolder(Connection connection)
      Create a new ConnectionHolder for the given JDBC Connection, wrapping it with a SimpleConnectionHandle, assuming that there is no ongoing transaction.
      Parameters:
      connection - the JDBC Connection to hold
      See Also:
    • ConnectionHolder

      public ConnectionHolder(Connection connection, boolean transactionActive)
      Create a new ConnectionHolder for the given JDBC Connection, wrapping it with a SimpleConnectionHandle.
      Parameters:
      connection - the JDBC Connection to hold
      transactionActive - whether the given Connection is involved in an ongoing transaction
      See Also:
  • Method Details

    • getConnectionHandle

      @Nullable public ConnectionHandle getConnectionHandle()
      Return the ConnectionHandle held by this ConnectionHolder.
    • hasConnection

      protected boolean hasConnection()
      Return whether this holder currently has a Connection.
    • setTransactionActive

      protected void setTransactionActive(boolean transactionActive)
      Set whether this holder represents an active, JDBC-managed transaction.
      See Also:
    • isTransactionActive

      protected boolean isTransactionActive()
      Return whether this holder represents an active, JDBC-managed transaction.
    • setConnection

      protected void setConnection(@Nullable Connection connection)
      Override the existing Connection handle with the given Connection. Reset the handle if given null.

      Used for releasing the Connection on suspend (with a null argument) and setting a fresh Connection on resume.

    • getConnection

      public Connection getConnection()
      Return the current Connection held by this ConnectionHolder.

      This will be the same Connection until released gets called on the ConnectionHolder, which will reset the held Connection, fetching a new Connection on demand.

      See Also:
    • supportsSavepoints

      public boolean supportsSavepoints() throws SQLException
      Return whether JDBC Savepoints are supported. Caches the flag for the lifetime of this ConnectionHolder.
      Throws:
      SQLException - if thrown by the JDBC driver
    • createSavepoint

      public Savepoint createSavepoint() throws SQLException
      Create a new JDBC Savepoint for the current Connection, using generated savepoint names that are unique for the Connection.
      Returns:
      the new Savepoint
      Throws:
      SQLException - if thrown by the JDBC driver
    • released

      public void released()
      Releases the current Connection held by this ConnectionHolder.

      This is necessary for ConnectionHandles that expect "Connection borrowing", where each returned Connection is only temporarily leased and needs to be returned once the data operation is done, to make the Connection available for other operations within the same transaction.

      Overrides:
      released in class ResourceHolderSupport
    • clear

      public void clear()
      Description copied from class: ResourceHolderSupport
      Clear the transactional state of this resource holder.
      Overrides:
      clear in class ResourceHolderSupport