Module org.jooq
Package org.jooq.impl

Class 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 Detail

      • DataSourceConnectionProvider

        public DataSourceConnectionProvider​(DataSource dataSource)
    • Method Detail

      • 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.