- All Known Implementing Classes:
DataSourceConnectionProvider
,DefaultConnectionProvider
,MockConnectionProvider
,NoConnectionProvider
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 TypeMethodDescription@Nullable Connection
acquire()
Acquire a connection from the connection lifecycle handler.void
release
(Connection connection) Release a connection to the connection lifecycle handler.
-
Method Details
-
acquire
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
. Ifnull
is returned (e.g. by NoConnectionProvider), then statements cannot be executed. Attempts to execute statements will result in aDetachedException
. - Throws:
DataAccessException
- If anything went wrong while acquiring a connection
-
release
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 fromacquire()
. This is nevernull
.- Throws:
DataAccessException
- If anything went wrong while releasing a connection
-