Module org.jooq
Package org.jooq

Interface ConnectionProvider

All Known Implementing Classes:
DataSourceConnectionProvider, DefaultConnectionProvider, MockConnectionProvider, NoConnectionProvider

public interface ConnectionProvider
A connection lifecycle handler API.

The ConnectionProvider allows for abstracting the handling of custom Connection lifecycles outside of jOOQ, injecting behaviour into jOOQ's internals. jOOQ will try to acquire a new JDBC Connection from the connection provider as early as needed, and will release it as early as possible.

TransactionProvider implementations may choose to influence ConnectionProvider behaviour, e.g. by acquiring connections upon TransactionProvider.begin(TransactionContext) and by releasing connections only upon TransactionProvider.commit(TransactionContext), or TransactionProvider.rollback(TransactionContext).

Author:
Aaron Digulla, Lukas Eder
  • Method Summary

    Modifier and Type
    Method
    Description
    @Nullable Connection
    Acquire a connection from the connection lifecycle handler.
    void
    release​(Connection connection)
    Release a connection to the connection lifecycle handler.
  • Method Details

    • acquire

      @Nullable @Nullable Connection acquire() throws DataAccessException
      Acquire a connection from the connection lifecycle handler.

      This method is called by jOOQ exactly once per execution lifecycle, i.e. per ExecuteContext. Implementations may freely chose, whether subsequent calls to this method:

      • return the same connection instance
      • return the same connection instance for the same thread
      • return the same connection instance for the same transaction (e.g. a javax.transaction.UserTransaction)
      • return a fresh connection instance every time

      jOOQ will guarantee that every acquired connection is released through release(Connection) exactly once.

      Returns:
      A connection for the current ExecuteContext. If null is returned (e.g. by NoConnectionProvider), then statements cannot be executed. Attempts to execute statements will result in a DetachedException.
      Throws:
      DataAccessException - If anything went wrong while acquiring a connection
    • release

      void release(Connection connection) throws DataAccessException
      Release a connection to the connection lifecycle handler.

      jOOQ will guarantee that every acquired connection is released exactly once.

      Parameters:
      connection - A connection that was previously obtained from acquire(). This is never null.
      Throws:
      DataAccessException - If anything went wrong while releasing a connection