Class Database
- Since:
- 1.0.0
- Author:
- Mark Allen
-
Nested Class Summary
Nested Classes -
Method Summary
Modifier and TypeMethodDescription@NonNull Optional<Transaction> Gets a reference to the current transaction, if any.@NonNull DatabaseTypeGets the database type for this database.@NonNull ZoneId<T> @NonNull Optional<T> participate(@NonNull Transaction transaction, @NonNull ReturningTransactionalOperation<T> transactionalOperation) Performs an operation in the context of a pre-existing transaction, optionall returning a value.voidparticipate(@NonNull Transaction transaction, @NonNull TransactionalOperation transactionalOperation) Performs an operation in the context of a pre-existing transaction.@NonNull QueryCreates a fluent builder for executing SQL.voidreadDatabaseMetaData(@NonNull DatabaseMetaDataReader databaseMetaDataReader) Exposes a temporary handle to JDBCDatabaseMetaData, which provides comprehensive vendor-specific information about this database as a whole.<T> @NonNull Optional<T> transaction(@NonNull ReturningTransactionalOperation<T> transactionalOperation) Performs an operation transactionally and optionally returns a value.voidtransaction(@NonNull TransactionalOperation transactionalOperation) Performs an operation transactionally.<T> @NonNull Optional<T> transaction(@NonNull TransactionIsolation transactionIsolation, @NonNull ReturningTransactionalOperation<T> transactionalOperation) Performs an operation transactionally with the given isolation level, optionally returning a value.voidtransaction(@NonNull TransactionIsolation transactionIsolation, @NonNull TransactionalOperation transactionalOperation) Performs an operation transactionally with the given isolation level.static @NonNull Database.BuilderwithDataSource(@NonNull DataSource dataSource) Provides aDatabasebuilder for the givenDataSource.
-
Method Details
-
withDataSource
Provides aDatabasebuilder for the givenDataSource. -
currentTransaction
Gets a reference to the current transaction, if any.- Returns:
- the current transaction
-
transaction
Performs an operation transactionally.The transaction will be automatically rolled back if an exception bubbles out of
transactionalOperation.Nested calls to
transaction(...)are independent transactions with independent JDBC connections; they do not automatically join an outer transaction. Useparticipate(Transaction, TransactionalOperation)to join an existing transaction explicitly.- Parameters:
transactionalOperation- the operation to perform transactionally
-
transaction
public void transaction(@NonNull TransactionIsolation transactionIsolation, @NonNull TransactionalOperation transactionalOperation) Performs an operation transactionally with the given isolation level.The transaction will be automatically rolled back if an exception bubbles out of
transactionalOperation.Nested calls to
transaction(...)are independent transactions with independent JDBC connections; they do not automatically join an outer transaction. Useparticipate(Transaction, TransactionalOperation)to join an existing transaction explicitly.- Parameters:
transactionIsolation- the desired database transaction isolation leveltransactionalOperation- the operation to perform transactionally
-
transaction
public <T> @NonNull Optional<T> transaction(@NonNull ReturningTransactionalOperation<T> transactionalOperation) Performs an operation transactionally and optionally returns a value.The transaction will be automatically rolled back if an exception bubbles out of
transactionalOperation.Nested calls to
transaction(...)are independent transactions with independent JDBC connections; they do not automatically join an outer transaction. Useparticipate(Transaction, ReturningTransactionalOperation)to join an existing transaction explicitly.- Type Parameters:
T- the type to be returned- Parameters:
transactionalOperation- the operation to perform transactionally- Returns:
- the result of the transactional operation
-
transaction
public <T> @NonNull Optional<T> transaction(@NonNull TransactionIsolation transactionIsolation, @NonNull ReturningTransactionalOperation<T> transactionalOperation) Performs an operation transactionally with the given isolation level, optionally returning a value.The transaction will be automatically rolled back if an exception bubbles out of
transactionalOperation.Nested calls to
transaction(...)are independent transactions with independent JDBC connections; they do not automatically join an outer transaction. Useparticipate(Transaction, ReturningTransactionalOperation)to join an existing transaction explicitly.- Type Parameters:
T- the type to be returned- Parameters:
transactionIsolation- the desired database transaction isolation leveltransactionalOperation- the operation to perform transactionally- Returns:
- the result of the transactional operation
-
participate
public void participate(@NonNull Transaction transaction, @NonNull TransactionalOperation transactionalOperation) Performs an operation in the context of a pre-existing transaction.No commit or rollback on the transaction will occur when
transactionalOperationcompletes.However, if an exception bubbles out of
transactionalOperation, the transaction will be marked as rollback-only.- Parameters:
transaction- the transaction in which to participatetransactionalOperation- the operation that should participate in the transaction
-
participate
public <T> @NonNull Optional<T> participate(@NonNull Transaction transaction, @NonNull ReturningTransactionalOperation<T> transactionalOperation) Performs an operation in the context of a pre-existing transaction, optionall returning a value.No commit or rollback on the transaction will occur when
transactionalOperationcompletes.However, if an exception bubbles out of
transactionalOperation, the transaction will be marked as rollback-only.- Type Parameters:
T- the type to be returned- Parameters:
transaction- the transaction in which to participatetransactionalOperation- the operation that should participate in the transaction- Returns:
- the result of the transactional operation
-
query
Creates a fluent builder for executing SQL.Named parameters use the
:paramNamesyntax and are bound viaQuery.bind(String, Object). Positional parameters via?are not supported.Example:
Optional<Employee> employee = database.query("SELECT * FROM employee WHERE id = :id") .bind("id", 42) .fetchObject(Employee.class);- Parameters:
sql- SQL containing:paramNameplaceholders- Returns:
- a fluent builder for binding parameters and executing
- Since:
- 4.0.0
-
readDatabaseMetaData
Exposes a temporary handle to JDBCDatabaseMetaData, which provides comprehensive vendor-specific information about this database as a whole.This method acquires
DatabaseMetaDataon its own newly-borrowed connection, which it manages internally.It does not participate in the active transaction, if one exists.
The connection is closed as soon as
DatabaseMetaDataReader.read(DatabaseMetaData)completes.See
DatabaseMetaDataJavadoc for details. -
getDatabaseType
Gets the database type for this database.If
Database.Builder.databaseType(DatabaseType)was not configured and the database type has not already been detected, this method may acquire a connection and inspectDatabaseMetaData. Configure an explicit database type to avoid runtime detection.- Returns:
- the database type
- Throws:
DatabaseException- if automatic database type detection fails- Since:
- 3.0.0
-
getTimeZone
- Since:
- 3.0.0
-