Class ConnectionHolder

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

public class ConnectionHolder extends org.springframework.transaction.support.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 Summary

    Fields
    Modifier and Type
    Field
    Description
    static final String
    Prefix for savepoint names.
  • Constructor Summary

    Constructors
    Constructor
    Description
    Create a new ConnectionHolder for the given JDBC Connection, wrapping it with a SimpleConnectionHandle, assuming that there is no ongoing transaction.
    ConnectionHolder(Connection connection, boolean transactionActive)
    Create a new ConnectionHolder for the given JDBC Connection, wrapping it with a SimpleConnectionHandle.
    Create a new ConnectionHolder for the given ConnectionHandle.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
     
    Create a new JDBC Savepoint for the current Connection, using generated savepoint names that are unique for the Connection.
    Return the current Connection held by this ConnectionHolder.
    Return the ConnectionHandle held by this ConnectionHolder.
    protected boolean
    Return whether this holder currently has a Connection.
    protected boolean
    Return whether this holder represents an active, JDBC-managed transaction.
    void
    Releases the current Connection held by this ConnectionHolder.
    protected void
    Override the existing Connection handle with the given Connection.
    protected void
    setTransactionActive(boolean transactionActive)
    Set whether this holder represents an active, JDBC-managed transaction.
    boolean
    Return whether JDBC Savepoints are supported.

    Methods inherited from class org.springframework.transaction.support.ResourceHolderSupport

    getDeadline, getTimeToLiveInMillis, getTimeToLiveInSeconds, hasTimeout, isOpen, isRollbackOnly, isSynchronizedWithTransaction, isVoid, requested, reset, resetRollbackOnly, setRollbackOnly, setSynchronizedWithTransaction, setTimeoutInMillis, setTimeoutInSeconds, unbound

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 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 org.springframework.transaction.support.ResourceHolderSupport
    • clear

      public void clear()
      Overrides:
      clear in class org.springframework.transaction.support.ResourceHolderSupport