Module org.jooq
Package org.jooq.impl

Class DataSourceConnectionProvider

java.lang.Object
org.jooq.impl.DataSourceConnectionProvider
All Implemented Interfaces:
ConnectionProvider

public class DataSourceConnectionProvider extends Object implements ConnectionProvider
A default implementation for a pooled DataSource-oriented ConnectionProvider

This implementation wraps a JDBC DataSource. jOOQ will use that data source for initialising connections, and creating statements.

Use this connection provider if you want to run distributed transactions, such as javax.transaction.UserTransaction. jOOQ will close() all connections after query execution (and result fetching) in order to return the connection to the connection pool. If you do not use distributed transactions, this will produce driver-specific behaviour at the end of query execution at close() invocation (e.g. a transaction rollback). Use a DefaultConnectionProvider instead, to control the connection's lifecycle, or implement your own ConnectionProvider.

Author:
Aaron Digulla, Lukas Eder
  • Constructor Details

    • DataSourceConnectionProvider

      public DataSourceConnectionProvider(DataSource dataSource)
  • Method Details

    • dataSource

      @NotNull public @NotNull DataSource dataSource()
    • acquire

      @NotNull public @NotNull Connection acquire()
      Description copied from interface: ConnectionProvider
      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 ConnectionProvider.release(Connection) exactly once.

      Specified by:
      acquire in interface ConnectionProvider
      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.
    • release

      public void release(Connection connection)
      Description copied from interface: ConnectionProvider
      Release a connection to the connection lifecycle handler.

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

      Specified by:
      release in interface ConnectionProvider
      Parameters:
      connection - A connection that was previously obtained from ConnectionProvider.acquire(). This is never null.