Package org.jooq.impl

Class DataSourceConnectionProvider

  • All Implemented Interfaces:
    ConnectionProvider

    public class DataSourceConnectionProvider
    extends java.lang.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
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.sql.Connection acquire()
      Acquire a connection from the connection lifecycle handler.
      javax.sql.DataSource dataSource()  
      void release​(java.sql.Connection connection)
      Release a connection to the connection lifecycle handler.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • DataSourceConnectionProvider

        public DataSourceConnectionProvider​(javax.sql.DataSource dataSource)
    • Method Detail

      • dataSource

        public javax.sql.DataSource dataSource()
      • acquire

        public java.sql.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.
      • release

        public void release​(java.sql.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.