Class DefaultJdbcRepositoryOperations
java.lang.Object
io.micronaut.data.runtime.operations.internal.AbstractRepositoryOperations
io.micronaut.data.runtime.operations.internal.sql.AbstractSqlRepositoryOperations<ResultSet,PreparedStatement,SQLException>
io.micronaut.data.jdbc.operations.DefaultJdbcRepositoryOperations
- All Implemented Interfaces:
io.micronaut.context.ApplicationContextProvider
,io.micronaut.core.convert.ConversionServiceProvider
,JdbcRepositoryOperations
,JdbcOperations
,AsyncCapableRepository
,DeleteReturningRepositoryOperations
,HintsCapableRepository
,ReactiveCapableRepository
,RepositoryOperations
,SyncCascadeOperations.SyncCascadeOperationsHelper<DefaultJdbcRepositoryOperations.JdbcOperationContext>
,MethodContextAwareStoredQueryDecorator
,PreparedQueryDecorator
,AutoCloseable
@EachBean(javax.sql.DataSource.class)
@Internal
public final class DefaultJdbcRepositoryOperations
extends AbstractSqlRepositoryOperations<ResultSet,PreparedStatement,SQLException>
implements JdbcRepositoryOperations, DeleteReturningRepositoryOperations, AsyncCapableRepository, ReactiveCapableRepository, AutoCloseable, SyncCascadeOperations.SyncCascadeOperationsHelper<DefaultJdbcRepositoryOperations.JdbcOperationContext>
Implementation of
JdbcRepositoryOperations
.- Since:
- 1.0.0
- Author:
- graemerocher, Denis Stepanov
-
Nested Class Summary
Modifier and TypeClassDescriptionprotected static class
Nested classes/interfaces inherited from class io.micronaut.data.runtime.operations.internal.sql.AbstractSqlRepositoryOperations
AbstractSqlRepositoryOperations.StatementSupplier<PS>
-
Field Summary
Fields inherited from class io.micronaut.data.runtime.operations.internal.sql.AbstractSqlRepositoryOperations
columnIndexResultSetReader, columnNameResultSetReader, dataSourceName, jsonMapper, preparedStatementWriter, QUERY_LOG, queryBuilders, repositoriesWithHardcodedDataSource, sqlJsonColumnMapperProvider
Fields inherited from class io.micronaut.data.runtime.operations.internal.AbstractRepositoryOperations
attributeConverterRegistry, conversionService, dateTimeProvider, entityEventRegistry, runtimeEntityRegistry
-
Method Summary
Modifier and TypeMethodDescription@NonNull ExecutorAsyncOperations
async()
void
close()
<T> long
count
(PagedQuery<T> pagedQuery) Counts all results for the given query.protected ResultReader<ResultSet,
String> protected SqlTypeMapper<ResultSet,
jakarta.persistence.Tuple> <T> int
delete
(@NonNull DeleteOperation<T> operation) Deletes the entity.deleteAll
(@NonNull DeleteBatchOperation<T> operation) Deletes all the entities of the given type.<E,
R> List<R> deleteAllReturning
(DeleteReturningBatchOperation<E, R> operation) Deletes the entities and returns a result.<E,
R> R deleteReturning
(DeleteReturningOperation<E, R> operation) Deletes the entity and returns a result.<T> @NonNull Stream<T>
entityStream
(@NonNull ResultSet resultSet, @NonNull Class<T> rootEntity) Map a result set to a stream of the given type.<T> @NonNull Stream<T>
entityStream
(@NonNull ResultSet resultSet, @Nullable String prefix, @NonNull Class<T> rootEntity) Map a result set to a stream of the given type.<R> R
execute
(@NonNull ConnectionCallback<R> callback) Execute the given operation with the given callback.<R> List<R>
execute
(PreparedQuery<?, R> pq) Executes the given query with parameter values returning a result.executeUpdate
(@NonNull PreparedQuery<?, Number> pq) Executes an update for the given query and parameter values.<T> boolean
exists
(@NonNull PreparedQuery<T, Boolean> pq) Execute a query that checks for existence.<T> @NonNull Iterable<T>
findAll
(@NonNull PagedQuery<T> query) Finds all results for the given query.<T,
R> @NonNull Iterable<R> findAll
(@NonNull PreparedQuery<T, R> preparedQuery) Finds all results for the given query.<T,
R> R findOne
(@NonNull PreparedQuery<T, R> pq) Find one by Query.<T> T
Find one by ID.<R> Page<R>
findPage
(@NonNull PagedQuery<R> query) Find a page for the given entity and pageable.<T> @NonNull Stream<T>
findStream
(@NonNull PagedQuery<T> query) Finds a stream for the given arguments.<T,
R> @NonNull Stream<R> findStream
(@NonNull PreparedQuery<T, R> preparedQuery) Finds all results for the given query.@NonNull Connection
This method will return the currently active connection for the current transaction or throw an exception if no transaction is present.@NonNull DataSource
protected Integer
boolean
isSupportsBatchInsert
(DefaultJdbcRepositoryOperations.JdbcOperationContext jdbcOperationContext, RuntimePersistentEntity<?> persistentEntity) Is supports batch insert.<T> T
persist
(@NonNull InsertOperation<T> operation) Persist the operation returning a possibly new entity.<T> @NonNull Iterable<T>
persistAll
(@NonNull InsertBatchOperation<T> operation) Persist all the given entities.<T> List<T>
persistBatch
(DefaultJdbcRepositoryOperations.JdbcOperationContext ctx, Iterable<T> values, RuntimePersistentEntity<T> childPersistentEntity, Predicate<T> predicate) Persist multiple entities in batch during cascade.void
persistManyAssociation
(DefaultJdbcRepositoryOperations.JdbcOperationContext ctx, RuntimeAssociation runtimeAssociation, Object value, RuntimePersistentEntity<Object> persistentEntity, Object child, RuntimePersistentEntity<Object> childPersistentEntity) Persist JOIN table relationship.void
persistManyAssociationBatch
(DefaultJdbcRepositoryOperations.JdbcOperationContext ctx, RuntimeAssociation runtimeAssociation, Object value, RuntimePersistentEntity<Object> persistentEntity, Iterable<Object> child, RuntimePersistentEntity<Object> childPersistentEntity) Persist JOIN table relationships in batch.<T> T
persistOne
(DefaultJdbcRepositoryOperations.JdbcOperationContext ctx, T value, RuntimePersistentEntity<T> persistentEntity) Persist one entity during cascade.<R> R
prepareStatement
(@NonNull String sql, @NonNull PreparedStatementCallback<R> callback) Execute the given operation with the given callback.@NonNull ReactiveRepositoryOperations
reactive()
<E,
D> D readDTO
(@NonNull String prefix, @NonNull ResultSet resultSet, @NonNull Class<E> rootEntity, @NonNull Class<D> dtoType) Read an entity using the given prefix to be passes to result set lookups.<E> E
readEntity
(@NonNull String prefix, @NonNull ResultSet resultSet, @NonNull Class<E> type) Read an entity using the given prefix to be passes to result set lookups.<T> T
update
(@NonNull UpdateOperation<T> operation) Updates the entity for the given operation.<T> @NonNull Iterable<T>
updateAll
(@NonNull UpdateBatchOperation<T> operation) Updates the entities for the given operation.<T> T
updateOne
(DefaultJdbcRepositoryOperations.JdbcOperationContext ctx, T value, RuntimePersistentEntity<T> persistentEntity) Update one entity during cascade.Methods inherited from class io.micronaut.data.runtime.operations.internal.sql.AbstractSqlRepositoryOperations
createMapper, createQueryResultMapper, decorate, decorate, getJsonColumn, getJsonDataType, getSqlPreparedQuery, getSqlStoredQuery, isJsonEntityGeneratedId, isJsonResult, isSupportsBatchDelete, isSupportsBatchInsert, isSupportsBatchInsert, isSupportsBatchUpdate, prepareStatement, resolveAssociationInsert, resolveEntityInsert, resolveEntityUpdate, resolveSqlInsertAssociation, setStatementParameter
Methods inherited from class io.micronaut.data.runtime.operations.internal.AbstractRepositoryOperations
checkOptimisticLocking, getApplicationContext, getConversionService, getEntity, getIdReader, isOnlySingleEndedJoins, triggerPostLoad
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface io.micronaut.context.ApplicationContextProvider
getApplicationContext
Methods inherited from interface io.micronaut.core.convert.ConversionServiceProvider
getConversionService
Methods inherited from interface io.micronaut.data.operations.HintsCapableRepository
getQueryHints
Methods inherited from interface io.micronaut.data.jdbc.runtime.JdbcOperations
readDTO, readEntity
Methods inherited from interface io.micronaut.data.operations.RepositoryOperations
executeDelete, getEntity
Methods inherited from interface io.micronaut.data.runtime.operations.internal.SyncCascadeOperations.SyncCascadeOperationsHelper
isSupportsBatchDelete, isSupportsBatchUpdate
-
Method Details
-
createColumnNameResultSetReaderWithColumnExistenceAware
- Overrides:
createColumnNameResultSetReaderWithColumnExistenceAware
in classAbstractSqlRepositoryOperations<ResultSet,
PreparedStatement, SQLException> - Returns:
- The result reader that will check for the column existence and return null for
ResultReader.readDynamic(Object, Object, DataType)
-
getFirstResultSetIndex
- Specified by:
getFirstResultSetIndex
in classAbstractSqlRepositoryOperations<ResultSet,
PreparedStatement, SQLException> - Returns:
- The first result set index.
-
createTupleMapper
- Specified by:
createTupleMapper
in classAbstractSqlRepositoryOperations<ResultSet,
PreparedStatement, SQLException>
-
persistOne
public <T> T persistOne(DefaultJdbcRepositoryOperations.JdbcOperationContext ctx, T value, RuntimePersistentEntity<T> persistentEntity) Description copied from interface:SyncCascadeOperations.SyncCascadeOperationsHelper
Persist one entity during cascade.- Specified by:
persistOne
in interfaceSyncCascadeOperations.SyncCascadeOperationsHelper<DefaultJdbcRepositoryOperations.JdbcOperationContext>
- Type Parameters:
T
- The entity type- Parameters:
ctx
- The contextvalue
- The entity valuepersistentEntity
- The persistent entity- Returns:
- The entity value
-
persistBatch
public <T> List<T> persistBatch(DefaultJdbcRepositoryOperations.JdbcOperationContext ctx, Iterable<T> values, RuntimePersistentEntity<T> childPersistentEntity, Predicate<T> predicate) Description copied from interface:SyncCascadeOperations.SyncCascadeOperationsHelper
Persist multiple entities in batch during cascade.- Specified by:
persistBatch
in interfaceSyncCascadeOperations.SyncCascadeOperationsHelper<DefaultJdbcRepositoryOperations.JdbcOperationContext>
- Type Parameters:
T
- The entity type- Parameters:
ctx
- The contextvalues
- The entity valueschildPersistentEntity
- The persistent entitypredicate
- The veto predicate- Returns:
- The entity values
-
updateOne
public <T> T updateOne(DefaultJdbcRepositoryOperations.JdbcOperationContext ctx, T value, RuntimePersistentEntity<T> persistentEntity) Description copied from interface:SyncCascadeOperations.SyncCascadeOperationsHelper
Update one entity during cascade.- Specified by:
updateOne
in interfaceSyncCascadeOperations.SyncCascadeOperationsHelper<DefaultJdbcRepositoryOperations.JdbcOperationContext>
- Type Parameters:
T
- The entity type- Parameters:
ctx
- The contextvalue
- The entity valuepersistentEntity
- The persistent entity- Returns:
- The entity value
-
persistManyAssociation
public void persistManyAssociation(DefaultJdbcRepositoryOperations.JdbcOperationContext ctx, RuntimeAssociation runtimeAssociation, Object value, RuntimePersistentEntity<Object> persistentEntity, Object child, RuntimePersistentEntity<Object> childPersistentEntity) Description copied from interface:SyncCascadeOperations.SyncCascadeOperationsHelper
Persist JOIN table relationship.- Specified by:
persistManyAssociation
in interfaceSyncCascadeOperations.SyncCascadeOperationsHelper<DefaultJdbcRepositoryOperations.JdbcOperationContext>
- Parameters:
ctx
- The contextruntimeAssociation
- The associationvalue
- The parent entity valuepersistentEntity
- The parent persistent entitychild
- The child entity valuechildPersistentEntity
- The child persistent entity
-
persistManyAssociationBatch
public void persistManyAssociationBatch(DefaultJdbcRepositoryOperations.JdbcOperationContext ctx, RuntimeAssociation runtimeAssociation, Object value, RuntimePersistentEntity<Object> persistentEntity, Iterable<Object> child, RuntimePersistentEntity<Object> childPersistentEntity) Description copied from interface:SyncCascadeOperations.SyncCascadeOperationsHelper
Persist JOIN table relationships in batch.- Specified by:
persistManyAssociationBatch
in interfaceSyncCascadeOperations.SyncCascadeOperationsHelper<DefaultJdbcRepositoryOperations.JdbcOperationContext>
- Parameters:
ctx
- The contextruntimeAssociation
- The associationvalue
- The parent entity valuepersistentEntity
- The parent persistent entitychild
- The child entity valueschildPersistentEntity
- The child persistent entity
-
async
- Specified by:
async
in interfaceAsyncCapableRepository
- Returns:
- The async operations.
-
reactive
- Specified by:
reactive
in interfaceReactiveCapableRepository
- Returns:
- The reactive operations instance.
-
findOne
Description copied from interface:RepositoryOperations
Find one by Query.- Specified by:
findOne
in interfaceRepositoryOperations
- Type Parameters:
T
- The generic resultTypeR
- The result type- Parameters:
pq
- The prepared query- Returns:
- A result or null
-
exists
Description copied from interface:RepositoryOperations
Execute a query that checks for existence.- Specified by:
exists
in interfaceRepositoryOperations
- Type Parameters:
T
- The generic resultType- Parameters:
pq
- The prepared query- Returns:
- A result or null
-
findStream
@NonNull public <T,R> @NonNull Stream<R> findStream(@NonNull @NonNull PreparedQuery<T, R> preparedQuery) Description copied from interface:RepositoryOperations
Finds all results for the given query.- Specified by:
findStream
in interfaceRepositoryOperations
- Type Parameters:
T
- The entity typeR
- The result type- Parameters:
preparedQuery
- The prepared query- Returns:
- An iterable result
-
findAll
@NonNull public <T,R> @NonNull Iterable<R> findAll(@NonNull @NonNull PreparedQuery<T, R> preparedQuery) Description copied from interface:RepositoryOperations
Finds all results for the given query.- Specified by:
findAll
in interfaceRepositoryOperations
- Type Parameters:
T
- The entity typeR
- The result type- Parameters:
preparedQuery
- The prepared query- Returns:
- An iterable result
-
executeUpdate
@NonNull public @NonNull Optional<Number> executeUpdate(@NonNull @NonNull PreparedQuery<?, Number> pq) Description copied from interface:RepositoryOperations
Executes an update for the given query and parameter values. If it is possible to return the number of objects updated, then do so.- Specified by:
executeUpdate
in interfaceRepositoryOperations
- Parameters:
pq
- The prepared query- Returns:
- An optional number with the count of the number of records updated
-
execute
Description copied from interface:RepositoryOperations
Executes the given query with parameter values returning a result.- Specified by:
execute
in interfaceRepositoryOperations
- Type Parameters:
R
- The result type- Parameters:
pq
- The prepared query- Returns:
- The result
-
deleteAll
Description copied from interface:RepositoryOperations
Deletes all the entities of the given type.- Specified by:
deleteAll
in interfaceRepositoryOperations
- Type Parameters:
T
- The generic type- Parameters:
operation
- The operation- Returns:
- The number of entities deleted
-
delete
Description copied from interface:RepositoryOperations
Deletes the entity.- Specified by:
delete
in interfaceRepositoryOperations
- Type Parameters:
T
- The generic type- Parameters:
operation
- The operation- Returns:
- The number of entities deleted
-
deleteReturning
Description copied from interface:DeleteReturningRepositoryOperations
Deletes the entity and returns a result.- Specified by:
deleteReturning
in interfaceDeleteReturningRepositoryOperations
- Type Parameters:
E
- The entity typeR
- The result type- Parameters:
operation
- The operation- Returns:
- The deleted entity
-
deleteAllReturning
Description copied from interface:DeleteReturningRepositoryOperations
Deletes the entities and returns a result.- Specified by:
deleteAllReturning
in interfaceDeleteReturningRepositoryOperations
- Type Parameters:
E
- The entity typeR
- The result type- Parameters:
operation
- The operation- Returns:
- The deleted entities
-
update
Description copied from interface:RepositoryOperations
Updates the entity for the given operation.- Specified by:
update
in interfaceRepositoryOperations
- Type Parameters:
T
- The generic type- Parameters:
operation
- The operation- Returns:
- The operation
-
updateAll
@NonNull public <T> @NonNull Iterable<T> updateAll(@NonNull @NonNull UpdateBatchOperation<T> operation) Description copied from interface:RepositoryOperations
Updates the entities for the given operation.- Specified by:
updateAll
in interfaceRepositoryOperations
- Type Parameters:
T
- The generic type- Parameters:
operation
- The operation- Returns:
- The updated entities
-
persist
Description copied from interface:RepositoryOperations
Persist the operation returning a possibly new entity.- Specified by:
persist
in interfaceRepositoryOperations
- Type Parameters:
T
- The generic type- Parameters:
operation
- The operation- Returns:
- The operation
-
findOne
Description copied from interface:RepositoryOperations
Find one by ID.- Specified by:
findOne
in interfaceRepositoryOperations
- Type Parameters:
T
- The generic type- Parameters:
type
- The typeid
- The id- Returns:
- A result or null
-
findAll
Description copied from interface:RepositoryOperations
Finds all results for the given query.- Specified by:
findAll
in interfaceRepositoryOperations
- Type Parameters:
T
- The generic type- Parameters:
query
- The root entity- Returns:
- An iterable result
-
count
Description copied from interface:RepositoryOperations
Counts all results for the given query.- Specified by:
count
in interfaceRepositoryOperations
- Type Parameters:
T
- The generic type- Parameters:
pagedQuery
- The paged query- Returns:
- An iterable result
-
findStream
Description copied from interface:RepositoryOperations
Finds a stream for the given arguments.- Specified by:
findStream
in interfaceRepositoryOperations
- Type Parameters:
T
- The generic type- Parameters:
query
- The query- Returns:
- The stream
-
findPage
Description copied from interface:RepositoryOperations
Find a page for the given entity and pageable.- Specified by:
findPage
in interfaceRepositoryOperations
- Type Parameters:
R
- The entity generic type- Parameters:
query
- The query- Returns:
- The page type
-
persistAll
@NonNull public <T> @NonNull Iterable<T> persistAll(@NonNull @NonNull InsertBatchOperation<T> operation) Description copied from interface:RepositoryOperations
Persist all the given entities.- Specified by:
persistAll
in interfaceRepositoryOperations
- Type Parameters:
T
- The generic type- Parameters:
operation
- The operation- Returns:
- The entities, possibly mutated
-
close
@PreDestroy public void close()- Specified by:
close
in interfaceAutoCloseable
-
getDataSource
- Specified by:
getDataSource
in interfaceJdbcOperations
- Returns:
- The backing data source.
-
getConnection
Description copied from interface:JdbcOperations
This method will return the currently active connection for the current transaction or throw an exception if no transaction is present.- Specified by:
getConnection
in interfaceJdbcOperations
- Returns:
- The current connection for the active transaction.
-
execute
Description copied from interface:JdbcOperations
Execute the given operation with the given callback.- Specified by:
execute
in interfaceJdbcOperations
- Type Parameters:
R
- The result type- Parameters:
callback
- The callback- Returns:
- The result
-
prepareStatement
@NonNull public <R> R prepareStatement(@NonNull @NonNull String sql, @NonNull @NonNull PreparedStatementCallback<R> callback) Description copied from interface:JdbcOperations
Execute the given operation with the given callback.- Specified by:
prepareStatement
in interfaceJdbcOperations
- Type Parameters:
R
- The result type- Parameters:
sql
- The SQLcallback
- The callback- Returns:
- The result
-
entityStream
@NonNull public <T> @NonNull Stream<T> entityStream(@NonNull @NonNull ResultSet resultSet, @NonNull @NonNull Class<T> rootEntity) Description copied from interface:JdbcOperations
Map a result set to a stream of the given type.- Specified by:
entityStream
in interfaceJdbcOperations
- Type Parameters:
T
- The generic type- Parameters:
resultSet
- The result setrootEntity
- The entity type- Returns:
- The stream
-
readEntity
@NonNull public <E> E readEntity(@NonNull @NonNull String prefix, @NonNull @NonNull ResultSet resultSet, @NonNull @NonNull Class<E> type) throws DataAccessException Description copied from interface:JdbcOperations
Read an entity using the given prefix to be passes to result set lookups.- Specified by:
readEntity
in interfaceJdbcOperations
- Type Parameters:
E
- The entity generic type- Parameters:
prefix
- The prefixresultSet
- The result settype
- The entity type- Returns:
- The entity result
- Throws:
DataAccessException
- if it is not possible read the result from the result set.
-
readDTO
@NonNull public <E,D> D readDTO(@NonNull @NonNull String prefix, @NonNull @NonNull ResultSet resultSet, @NonNull @NonNull Class<E> rootEntity, @NonNull @NonNull Class<D> dtoType) throws DataAccessException Description copied from interface:JdbcOperations
Read an entity using the given prefix to be passes to result set lookups.- Specified by:
readDTO
in interfaceJdbcOperations
- Type Parameters:
E
- The entity generic typeD
- The DTO generic type- Parameters:
prefix
- The prefixresultSet
- The result setrootEntity
- The entity typedtoType
- The DTO type. Must be annotated withIntrospected
- Returns:
- The entity result
- Throws:
DataAccessException
- if it is not possible read the result from the result set.
-
entityStream
@NonNull public <T> @NonNull Stream<T> entityStream(@NonNull @NonNull ResultSet resultSet, @Nullable @Nullable String prefix, @NonNull @NonNull Class<T> rootEntity) Description copied from interface:JdbcOperations
Map a result set to a stream of the given type.- Specified by:
entityStream
in interfaceJdbcOperations
- Type Parameters:
T
- The generic type- Parameters:
resultSet
- The result setprefix
- The prefix to use for each column name that is mappedrootEntity
- The entity type- Returns:
- The stream
-
isSupportsBatchInsert
public boolean isSupportsBatchInsert(DefaultJdbcRepositoryOperations.JdbcOperationContext jdbcOperationContext, RuntimePersistentEntity<?> persistentEntity) Description copied from interface:SyncCascadeOperations.SyncCascadeOperationsHelper
Is supports batch insert.- Specified by:
isSupportsBatchInsert
in interfaceSyncCascadeOperations.SyncCascadeOperationsHelper<DefaultJdbcRepositoryOperations.JdbcOperationContext>
- Parameters:
jdbcOperationContext
- The contextpersistentEntity
- The persistent entity- Returns:
- True if supports
-