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 voidaddCleanable(Cleanable cleanable) Registers aCleanableto be invoked when the handle is closed.addHandleListener(HandleListener handleListener) Add a specificHandleListenerwhich 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> TCreate a Jdbi extension object of the specified type bound to this handle.begin()Start a transaction.voidclean()Release any database resource that may be held by the handle.voidclose()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.booleanintexecute(CharSequence sql, Object... args) Execute a SQL statement, and return the number of rows affected by the statement.intExecute a SQL statement, and return the number of rows affected by the statement.The current configuration object associated with this handle.Get the JDBCConnectionthis Handle uses.Returns the extension method currently bound to the handle's context.getJdbi()Returns theJdbiobject used to create this handle.Returns the currentStatementBuilderwhich is used to create new JDBCStatementobjects.Obtain the current transaction isolation level.inthashCode()<R,X extends Exception>
RinTransaction(HandleCallback<R, X> callback) Executescallbackin a transaction, and returns the result of the callback.<R,X extends Exception>
RinTransaction(TransactionIsolationLevel level, HandleCallback<R, X> callback) Executescallbackin a transaction, and returns the result of the callback.booleanisClean()Returns true if the Handle currently holds no database resources.booleanisClosed()Returns true if theHandlehas been closed.booleanReturns whether the handle is in a transaction.booleanWhether 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> TqueryMetadata(MetaData.MetaDataValueProvider<T> metadataFunction) Access all database metadata that returns simple values.Deprecated.releaseSavepoint(String savepointName) Release a previously created savepoint.final voidremoveCleanable(Cleanable cleanable) Unregister aCleanablefrom the Handle.removeHandleListener(HandleListener handleListener) Remove aHandleListenerfrom 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.voidsetTransactionIsolation(int level) Deprecated.voidDeprecated.voidsetTransactionIsolationLevel(int level) Set the transaction isolation level on the underlying connection if it is different from the current isolation level.voidSet the transaction isolation level on the underlying connection if it is different from the current isolation level.<X extends Exception>
voiduseTransaction(HandleConsumer<X> consumer) Executescallbackin a transaction.<X extends Exception>
voiduseTransaction(TransactionIsolationLevel level, HandleConsumer<X> consumer) Executescallbackin a transaction.Methods inherited from class java.lang.Object
getClass, notify, notifyAll, toString, wait, wait, waitMethods 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
Returns theJdbiobject used to create this handle.- Returns:
- The
Jdbiobject used to create this handle.
-
getConfig
The current configuration object associated with this handle.- Specified by:
getConfigin interfaceConfigurable<Handle>- Returns:
- A
ConfigRegistryobject that is associated with the handle.
-
getConnection
Get the JDBCConnectionthis Handle uses.- Returns:
- the JDBC
Connectionthis Handle uses.
-
getStatementBuilder
Returns the currentStatementBuilderwhich is used to create new JDBCStatementobjects.- 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 specificHandleListenerwhich 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- AHandleListenerobject.- Returns:
- The handle itself.
-
removeHandleListener
Remove aHandleListenerfrom 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- AHandleListenerobject.- Returns:
- The handle itself.
-
addCleanable
Registers aCleanableto 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 aCleanablefrom 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:
closein interfaceAutoCloseable- Specified by:
closein 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 returnfalseright 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 theHandlehas 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
Convenience method which creates a query with the given positional arguments. Takes a string argument for backwards compatibility reasons.- Parameters:
sql- SQL or named statementargs- arguments to bind positionally- Returns:
- query object
- See Also:
-
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
Create a call to a stored procedure. Takes a string argument for backwards compatibility reasons.- Parameters:
sql- the stored procedure sql.- Returns:
- the Call.
- See Also:
-
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
Return a Query instance that executes a statement with bound parameters and maps the result set into Java types. Takes a string argument for backwards compatibility reasons.- Parameters:
sql- SQL that may return results.- Returns:
- a Query builder.
- See Also:
-
createScript
Creates a Script from the given SQL script.- Parameters:
sql- the SQL script.- Returns:
- the created Script.
-
createScript
Create an Insert or Update statement which returns the number of rows modified. Takes a string argument for backwards compatibility reasons.- Parameters:
sql- the statement sql.- Returns:
- the Update builder.
- See Also:
-
createUpdate
Create an Insert or Update statement which returns the number of rows modified.- Parameters:
sql- the statement sql.- Returns:
- the Update builder.
-
createUpdate
Create an Insert or Update statement which returns the number of rows modified. Takes a string argument for backwards compatibility reasons.- Parameters:
sql- the statement sql.- Returns:
- the Update builder.
- See Also:
-
queryMetadata
Access database metadata that returns aResultSet. All methods ofResultBearingcan 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 providedDatabaseMetaDataobject onto aResultSetobject.- Returns:
- The metadata builder.
-
queryMetadata
Access all database metadata that returns simple values.boolean supportsTransactions = handle.queryMetadata(DatabaseMetaData::supportsTransactions);- Parameters:
metadataFunction- Maps the providedDatabaseMetaDataobject 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
Start a transaction.- Returns:
- the same handle.
-
commit
Commit a transaction.- Returns:
- the same handle.
-
rollback
Rollback a transaction.- Returns:
- the same handle.
-
afterCommit
Execute an action the next time this Handle commits, unless it is rolled back first.- Parameters:
afterCommit- the action to execute after commit.- Returns:
- this Handle.
-
afterRollback
Execute an action the next time this Handle rolls back, unless it is committed first.- Parameters:
afterRollback- the action to execute after rollback.- Returns:
- this Handle.
-
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
Create a transaction savepoint with the name provided.- Parameters:
name- The name of the savepoint.- Returns:
- The same handle.
-
release
Deprecated.Release a previously created savepoint.- Parameters:
savepointName- the name of the savepoint to release.- Returns:
- the same handle.
-
releaseSavepoint
Release a previously created savepoint.- Parameters:
savepointName- the name of the savepoint to release.- Returns:
- the same handle.
-
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
Executescallbackin 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
Executescallbackin 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 XExecutescallbackin 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 Executescallbackin 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- theTransactionIsolationLevelto 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- theTransactionIsolationLevelto 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
public int hashCode()
-
releaseSavepoint(String)