Package org.jdbi.v3.core
Class Handle
java.lang.Object
org.jdbi.v3.core.Handle
- All Implemented Interfaces:
Closeable
,AutoCloseable
,Configurable<Handle>
This represents a connection to the database system. It is a wrapper around
a JDBC Connection object. Handle provides essential methods for transaction
management, statement creation, and other operations tied to the database session.
-
Method Summary
Modifier and TypeMethodDescriptionfinal void
addCleanable
(Cleanable cleanable) Registers aCleanable
to be invoked when the handle is closed.addHandleListener
(HandleListener handleListener) Add a specificHandleListener
which is called for specific events for this Handle.afterCommit
(Runnable afterCommit) Execute an action the next time this Handle commits, unless it is rolled back first.afterRollback
(Runnable afterRollback) Execute an action the next time this Handle rolls back, unless it is committed first.<T> T
Create a Jdbi extension object of the specified type bound to this handle.begin()
Start a transaction.void
clean()
Release any database resource that may be held by the handle.void
close()
Closes the handle, its connection, and any other database resources it is holding.commit()
Commit a transaction.Create a non-prepared (no bound parameters, but different SQL) batch statement.createCall
(CharSequence sql) Create a call to a stored procedure.createCall
(String sql) Create a call to a stored procedure.createQuery
(CharSequence sql) Return a Query instance that executes a statement with bound parameters and maps the result set into Java types.createQuery
(String sql) Return a Query instance that executes a statement with bound parameters and maps the result set into Java types.createScript
(CharSequence sql) Creates a Script from the given SQL script.createScript
(String sql) Create an Insert or Update statement which returns the number of rows modified.createUpdate
(CharSequence sql) Create an Insert or Update statement which returns the number of rows modified.createUpdate
(String sql) Create an Insert or Update statement which returns the number of rows modified.boolean
int
execute
(CharSequence sql, Object... args) Execute a SQL statement, and return the number of rows affected by the statement.int
Execute a SQL statement, and return the number of rows affected by the statement.The current configuration object associated with this handle.Get the JDBCConnection
this Handle uses.Returns the extension method currently bound to the handle's context.getJdbi()
Returns theJdbi
object used to create this handle.Returns the currentStatementBuilder
which is used to create new JDBCStatement
objects.Obtain the current transaction isolation level.int
hashCode()
<R,
X extends Exception>
RinTransaction
(HandleCallback<R, X> callback) Executescallback
in a transaction, and returns the result of the callback.<R,
X extends Exception>
RinTransaction
(TransactionIsolationLevel level, HandleCallback<R, X> callback) Executescallback
in a transaction, and returns the result of the callback.boolean
isClean()
Returns true if the Handle currently holds no database resources.boolean
isClosed()
Returns true if theHandle
has been closed.boolean
Returns whether the handle is in a transaction.boolean
Whether the connection is in read-only mode.prepareBatch
(CharSequence sql) Prepare a batch to execute.prepareBatch
(String sql) Prepare a batch to execute.queryMetadata
(MetaData.MetaDataResultSetProvider metadataFunction) Access database metadata that returns aResultSet
.<T> T
queryMetadata
(MetaData.MetaDataValueProvider<T> metadataFunction) Access all database metadata that returns simple values.Deprecated.releaseSavepoint
(String savepointName) Release a previously created savepoint.final void
removeCleanable
(Cleanable cleanable) Unregister aCleanable
from the Handle.removeHandleListener
(HandleListener handleListener) Remove aHandleListener
from this handle.rollback()
Rollback a transaction.rollbackToSavepoint
(String savepointName) Rollback a transaction to a named savepoint.Create a transaction savepoint with the name provided.select
(CharSequence sql, Object... args) Convenience method which creates a query with the given positional arguments.Convenience method which creates a query with the given positional arguments.setReadOnly
(boolean readOnly) Set the Handle read-only.setStatementBuilder
(StatementBuilder builder) Set the statement builder for this handle.void
setTransactionIsolation
(int level) Deprecated.void
Deprecated.void
setTransactionIsolationLevel
(int level) Set the transaction isolation level on the underlying connection if it is different from the current isolation level.void
Set the transaction isolation level on the underlying connection if it is different from the current isolation level.<X extends Exception>
voiduseTransaction
(HandleConsumer<X> consumer) Executescallback
in a transaction.<X extends Exception>
voiduseTransaction
(TransactionIsolationLevel level, HandleConsumer<X> consumer) Executescallback
in a transaction.Methods inherited from class java.lang.Object
getClass, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.jdbi.v3.core.config.Configurable
addCustomizer, configure, define, getConfig, registerArgument, registerArgument, registerArrayType, registerArrayType, registerArrayType, registerArrayType, registerCodecFactory, registerCollector, registerCollector, registerColumnMapper, registerColumnMapper, registerColumnMapper, registerColumnMapper, registerColumnMapper, registerColumnMapper, registerExtension, registerRowMapper, registerRowMapper, registerRowMapper, registerRowMapper, setMapKeyColumn, setMapValueColumn, setSqlArrayArgumentStrategy, setSqlLogger, setSqlParser, setTemplateEngine, setTimingCollector
-
Method Details
-
getJdbi
-
getConfig
The current configuration object associated with this handle.- Specified by:
getConfig
in interfaceConfigurable<Handle>
- Returns:
- A
ConfigRegistry
object that is associated with the handle.
-
getConnection
Get the JDBCConnection
this Handle uses.- Returns:
- the JDBC
Connection
this Handle uses.
-
getStatementBuilder
Returns the currentStatementBuilder
which is used to create new JDBCStatement
objects.- Returns:
- the current
StatementBuilder
.
-
setStatementBuilder
Set the statement builder for this handle.- Parameters:
builder
- StatementBuilder to be used. Must not be null.- Returns:
- this
-
addHandleListener
Add a specificHandleListener
which is called for specific events for this Handle. Note that it is not possible to add a listener that wants to implementHandleListener.handleCreated(org.jdbi.v3.core.Handle)
this way as the handle has already been created. UseHandles.addListener(org.jdbi.v3.core.HandleListener)
in this case.
A listener added through this call is specific to the handle and not shared with other handles.- Parameters:
handleListener
- AHandleListener
object.- Returns:
- The handle itself.
-
removeHandleListener
Remove aHandleListener
from this handle.
Removing the listener only affects the current handle. To remove a listener for all future handles, useHandles.removeListener(org.jdbi.v3.core.HandleListener)
.- Parameters:
handleListener
- AHandleListener
object.- Returns:
- The handle itself.
-
addCleanable
Registers aCleanable
to be invoked when the handle is closed. Any cleanable registered here will only be cleaned once.Resources cleaned up by Jdbi include
ResultSet
,Statement
,Array
, andStatementBuilder
.- Parameters:
cleanable
- the Cleanable to clean on close
-
removeCleanable
Unregister aCleanable
from the Handle.- Parameters:
cleanable
- the Cleanable to be unregistered.
-
close
public void close()Closes the handle, its connection, and any other database resources it is holding.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Throws:
CloseException
- if any resources throw exception while closingTransactionException
- if called while the handle has a transaction open. The open transaction will be rolled back.
-
clean
public void clean()Release any database resource that may be held by the handle. This affects any statement that was created from the Handle. -
isClean
public boolean isClean()Returns true if the Handle currently holds no database resources.
Note that this method will returnfalse
right after statement creation as every statement registers its statement context with the handle. Once- Returns:
- True if the handle holds no database resources.
-
isClosed
public boolean isClosed()Returns true if theHandle
has been closed.- Returns:
- True if the Handle is closed.
-
select
Convenience method which creates a query with the given positional arguments.- Parameters:
sql
- SQL or named statementargs
- arguments to bind positionally- Returns:
- query object
-
select
-
execute
Execute a SQL statement, and return the number of rows affected by the statement.- Parameters:
sql
- the SQL statement to execute, using positional parameters (if any).args
- positional arguments.- Returns:
- the number of rows affected.
-
execute
Execute a SQL statement, and return the number of rows affected by the statement. Takes a string argument for backwards compatibility reasons.- Parameters:
sql
- the SQL statement to execute, using positional parameters (if any).args
- positional arguments.- Returns:
- the number of rows affected.
- See Also:
-
createBatch
Create a non-prepared (no bound parameters, but different SQL) batch statement.- Returns:
- empty batch
- See Also:
-
prepareBatch
Prepare a batch to execute. This is for efficiently executing more than one of the same statements with different parameters bound.- Parameters:
sql
- the batch SQL.- Returns:
- a batch which can have "statements" added.
-
prepareBatch
Prepare a batch to execute. This is for efficiently executing more than one of the same statements with different parameters bound. Takes a string argument for backwards compatibility reasons.- Parameters:
sql
- the batch SQL.- Returns:
- a batch which can have "statements" added.
- See Also:
-
createCall
Create a call to a stored procedure.- Parameters:
sql
- the stored procedure sql.- Returns:
- the Call.
-
createCall
-
createQuery
Return a Query instance that executes a statement with bound parameters and maps the result set into Java types.- Parameters:
sql
- SQL that may return results.- Returns:
- a Query builder.
-
createQuery
-
createScript
Creates a Script from the given SQL script.- Parameters:
sql
- the SQL script.- Returns:
- the created Script.
-
createScript
-
createUpdate
Create an Insert or Update statement which returns the number of rows modified.- Parameters:
sql
- the statement sql.- Returns:
- the Update builder.
-
createUpdate
-
queryMetadata
Access database metadata that returns aResultSet
. All methods ofResultBearing
can be used to format and map the returned results.List<String> catalogs = h.queryMetadata(DatabaseMetaData::getCatalogs) .mapTo(String.class) .list();
returns the list of catalogs from the current database.
- Parameters:
metadataFunction
- Maps the providedDatabaseMetaData
object onto aResultSet
object.- Returns:
- The metadata builder.
-
queryMetadata
Access all database metadata that returns simple values.boolean supportsTransactions = handle.queryMetadata(DatabaseMetaData::supportsTransactions);
- Parameters:
metadataFunction
- Maps the providedDatabaseMetaData
object to a response object.- Returns:
- The response object.
-
isInTransaction
public boolean isInTransaction()Returns whether the handle is in a transaction. Delegates to the underlyingTransactionHandler
.- Returns:
- True if the handle is in a transaction.
-
begin
-
commit
-
rollback
-
afterCommit
-
afterRollback
-
rollbackToSavepoint
Rollback a transaction to a named savepoint.- Parameters:
savepointName
- the name of the savepoint, previously declared withsavepoint(java.lang.String)
.- Returns:
- the same handle.
-
savepoint
-
release
Deprecated.Release a previously created savepoint.- Parameters:
savepointName
- the name of the savepoint to release.- Returns:
- the same handle.
-
releaseSavepoint
-
isReadOnly
public boolean isReadOnly()Whether the connection is in read-only mode.- Returns:
- True if the connection is in read-only mode.
- See Also:
-
setReadOnly
Set the Handle read-only. This acts as a hint to the database to improve performance or concurrency.
May not be called in an active transaction!- Parameters:
readOnly
- whether the Handle is readOnly.- Returns:
- this Handle.
- See Also:
-
inTransaction
Executescallback
in a transaction, and returns the result of the callback.- Type Parameters:
R
- type returned by callbackX
- exception type thrown by the callback, if any- Parameters:
callback
- a callback which will receive an open handle, in a transaction.- Returns:
- value returned from the callback
- Throws:
X
- any exception thrown by the callback
-
useTransaction
Executescallback
in a transaction.- Type Parameters:
X
- exception type thrown by the callback, if any- Parameters:
consumer
- a callback which will receive an open handle, in a transaction.- Throws:
X
- any exception thrown by the callback
-
inTransaction
public <R,X extends Exception> R inTransaction(TransactionIsolationLevel level, HandleCallback<R, X> callback) throws XExecutescallback
in a transaction, and returns the result of the callback.This form accepts a transaction isolation level which will be applied to the connection for the scope of this transaction, after which the original isolation level will be restored.
- Type Parameters:
R
- type returned by callbackX
- exception type thrown by the callback, if any- Parameters:
level
- the transaction isolation level which will be applied to the connection for the scope of this transaction, after which the original isolation level will be restored.callback
- a callback which will receive an open handle, in a transaction.- Returns:
- value returned from the callback
- Throws:
X
- any exception thrown by the callback
-
useTransaction
public <X extends Exception> void useTransaction(TransactionIsolationLevel level, HandleConsumer<X> consumer) throws X Executescallback
in a transaction.This form accepts a transaction isolation level which will be applied to the connection for the scope of this transaction, after which the original isolation level will be restored.
- Type Parameters:
X
- exception type thrown by the callback, if any- Parameters:
level
- the transaction isolation level which will be applied to the connection for the scope of this transaction, after which the original isolation level will be restored.consumer
- a callback which will receive an open handle, in a transaction.- Throws:
X
- any exception thrown by the callback
-
setTransactionIsolation
Deprecated.Set the transaction isolation level on the underlying connection if it is different from the current isolation level.- Parameters:
level
- theTransactionIsolationLevel
to use.- Throws:
UnableToManipulateTransactionIsolationLevelException
- if isolation level is not supported by the underlying connection or JDBC driver.
-
setTransactionIsolationLevel
Set the transaction isolation level on the underlying connection if it is different from the current isolation level.- Parameters:
level
- theTransactionIsolationLevel
to use.- Throws:
UnableToManipulateTransactionIsolationLevelException
- if isolation level is not supported by the underlying connection or JDBC driver.
-
setTransactionIsolation
Deprecated.Set the transaction isolation level on the underlying connection if it is different from the current isolation level.- Parameters:
level
- the isolation level to use.- See Also:
-
setTransactionIsolationLevel
public void setTransactionIsolationLevel(int level) Set the transaction isolation level on the underlying connection if it is different from the current isolation level.- Parameters:
level
- the isolation level to use.- See Also:
-
getTransactionIsolationLevel
Obtain the current transaction isolation level.- Returns:
- the current isolation level on the underlying connection.
-
attach
Create a Jdbi extension object of the specified type bound to this handle. The returned extension's lifecycle is coupled to the lifecycle of this handle. Closing the handle will render the extension unusable.- Type Parameters:
T
- the extension type- Parameters:
extensionType
- the extension class- Returns:
- the new extension object bound to this handle
-
getExtensionMethod
Returns the extension method currently bound to the handle's context.- Returns:
- the extension method currently bound to the handle's context
-
equals
-
hashCode
-
releaseSavepoint(String)