Package org.hibernate.reactive.pool
Class BatchingConnection
- java.lang.Object
-
- org.hibernate.reactive.pool.BatchingConnection
-
- All Implemented Interfaces:
ReactiveConnection
public class BatchingConnection extends java.lang.Object implements ReactiveConnection
AReactiveConnection
that automatically performs batching of insert, update, and delete statements, relieving the client persister code of the responsibility to manage batching. Actual SQL statements are delegated to a givenReactiveConnection
which only supports explicit batching usingupdate(String, List)
.Note that in Hibernate core, the responsibilities of this class are handled by
JdbcCoordinator
and theBatch
interface. However, the model used there is not easily adaptable to the reactive paradigm.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.hibernate.reactive.pool.ReactiveConnection
ReactiveConnection.Expectation, ReactiveConnection.Result
-
-
Constructor Summary
Constructors Constructor Description BatchingConnection(ReactiveConnection delegate, int batchSize)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.concurrent.CompletionStage<java.lang.Void>
beginTransaction()
java.util.concurrent.CompletionStage<java.lang.Void>
close()
java.util.concurrent.CompletionStage<java.lang.Void>
commitTransaction()
java.util.concurrent.CompletionStage<java.lang.Void>
execute(java.lang.String sql)
java.util.concurrent.CompletionStage<java.lang.Void>
executeBatch()
java.util.concurrent.CompletionStage<java.lang.Void>
executeOutsideTransaction(java.lang.String sql)
java.util.concurrent.CompletionStage<java.lang.Void>
executeUnprepared(java.lang.String sql)
Run sql as statement (instead of preparedStatement)io.vertx.sqlclient.spi.DatabaseMetadata
getDatabaseMetadata()
<T> java.util.concurrent.CompletionStage<T>
insertAndSelectIdentifier(java.lang.String sql, java.lang.Object[] paramValues, java.lang.Class<T> idClass, java.lang.String idColumnName)
java.util.concurrent.CompletionStage<java.lang.Void>
rollbackTransaction()
java.util.concurrent.CompletionStage<ReactiveConnection.Result>
select(java.lang.String sql)
java.util.concurrent.CompletionStage<ReactiveConnection.Result>
select(java.lang.String sql, java.lang.Object[] paramValues)
<T> java.util.concurrent.CompletionStage<T>
selectIdentifier(java.lang.String sql, java.lang.Object[] paramValues, java.lang.Class<T> idClass)
java.util.concurrent.CompletionStage<java.sql.ResultSet>
selectJdbc(java.lang.String sql, java.lang.Object[] paramValues)
java.util.concurrent.CompletionStage<java.sql.ResultSet>
selectJdbcOutsideTransaction(java.lang.String sql, java.lang.Object[] paramValues)
This method is intended to be used only for queries returning a ResultSet that must be executed outside of any "current" transaction (i.e with autocommit=true).java.util.concurrent.CompletionStage<java.lang.Integer>
update(java.lang.String sql)
java.util.concurrent.CompletionStage<java.lang.Integer>
update(java.lang.String sql, java.lang.Object[] paramValues)
java.util.concurrent.CompletionStage<java.lang.Void>
update(java.lang.String sql, java.lang.Object[] paramValues, boolean allowBatching, ReactiveConnection.Expectation expectation)
java.util.concurrent.CompletionStage<int[]>
update(java.lang.String sql, java.util.List<java.lang.Object[]> paramValues)
ReactiveConnection
withBatchSize(int batchSize)
-
-
-
Constructor Detail
-
BatchingConnection
public BatchingConnection(ReactiveConnection delegate, int batchSize)
-
-
Method Detail
-
getDatabaseMetadata
public io.vertx.sqlclient.spi.DatabaseMetadata getDatabaseMetadata()
- Specified by:
getDatabaseMetadata
in interfaceReactiveConnection
-
withBatchSize
public ReactiveConnection withBatchSize(int batchSize)
- Specified by:
withBatchSize
in interfaceReactiveConnection
-
executeBatch
public java.util.concurrent.CompletionStage<java.lang.Void> executeBatch()
- Specified by:
executeBatch
in interfaceReactiveConnection
-
update
public java.util.concurrent.CompletionStage<java.lang.Void> update(java.lang.String sql, java.lang.Object[] paramValues, boolean allowBatching, ReactiveConnection.Expectation expectation)
- Specified by:
update
in interfaceReactiveConnection
-
execute
public java.util.concurrent.CompletionStage<java.lang.Void> execute(java.lang.String sql)
- Specified by:
execute
in interfaceReactiveConnection
-
executeUnprepared
public java.util.concurrent.CompletionStage<java.lang.Void> executeUnprepared(java.lang.String sql)
Description copied from interface:ReactiveConnection
Run sql as statement (instead of preparedStatement)- Specified by:
executeUnprepared
in interfaceReactiveConnection
-
executeOutsideTransaction
public java.util.concurrent.CompletionStage<java.lang.Void> executeOutsideTransaction(java.lang.String sql)
- Specified by:
executeOutsideTransaction
in interfaceReactiveConnection
-
update
public java.util.concurrent.CompletionStage<java.lang.Integer> update(java.lang.String sql)
- Specified by:
update
in interfaceReactiveConnection
-
update
public java.util.concurrent.CompletionStage<java.lang.Integer> update(java.lang.String sql, java.lang.Object[] paramValues)
- Specified by:
update
in interfaceReactiveConnection
-
update
public java.util.concurrent.CompletionStage<int[]> update(java.lang.String sql, java.util.List<java.lang.Object[]> paramValues)
- Specified by:
update
in interfaceReactiveConnection
-
insertAndSelectIdentifier
public <T> java.util.concurrent.CompletionStage<T> insertAndSelectIdentifier(java.lang.String sql, java.lang.Object[] paramValues, java.lang.Class<T> idClass, java.lang.String idColumnName)
- Specified by:
insertAndSelectIdentifier
in interfaceReactiveConnection
-
select
public java.util.concurrent.CompletionStage<ReactiveConnection.Result> select(java.lang.String sql)
- Specified by:
select
in interfaceReactiveConnection
-
select
public java.util.concurrent.CompletionStage<ReactiveConnection.Result> select(java.lang.String sql, java.lang.Object[] paramValues)
- Specified by:
select
in interfaceReactiveConnection
-
selectJdbc
public java.util.concurrent.CompletionStage<java.sql.ResultSet> selectJdbc(java.lang.String sql, java.lang.Object[] paramValues)
- Specified by:
selectJdbc
in interfaceReactiveConnection
-
selectJdbcOutsideTransaction
public java.util.concurrent.CompletionStage<java.sql.ResultSet> selectJdbcOutsideTransaction(java.lang.String sql, java.lang.Object[] paramValues)
Description copied from interface:ReactiveConnection
This method is intended to be used only for queries returning a ResultSet that must be executed outside of any "current" transaction (i.e with autocommit=true). For example, it would be appropriate to use this method when performing queries on information_schema or system tables in order to obtain metadata information about catalogs, schemas, tables, etc.- Specified by:
selectJdbcOutsideTransaction
in interfaceReactiveConnection
- Parameters:
sql
- - the query to execute outside of a transactionparamValues
- - a non-null array of parameter values- Returns:
- the CompletionStage
from executing the query.
-
selectIdentifier
public <T> java.util.concurrent.CompletionStage<T> selectIdentifier(java.lang.String sql, java.lang.Object[] paramValues, java.lang.Class<T> idClass)
- Specified by:
selectIdentifier
in interfaceReactiveConnection
-
beginTransaction
public java.util.concurrent.CompletionStage<java.lang.Void> beginTransaction()
- Specified by:
beginTransaction
in interfaceReactiveConnection
-
commitTransaction
public java.util.concurrent.CompletionStage<java.lang.Void> commitTransaction()
- Specified by:
commitTransaction
in interfaceReactiveConnection
-
rollbackTransaction
public java.util.concurrent.CompletionStage<java.lang.Void> rollbackTransaction()
- Specified by:
rollbackTransaction
in interfaceReactiveConnection
-
close
public java.util.concurrent.CompletionStage<java.lang.Void> close()
- Specified by:
close
in interfaceReactiveConnection
-
-