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
Nested ClassesModifier and TypeClassDescriptionprotected static classNested 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, propertyPlaceholderResolver, QUERY_LOG, queryBuilders, repositoriesWithHardcodedDataSource, sqlJsonColumnMapperProviderFields inherited from class io.micronaut.data.runtime.operations.internal.AbstractRepositoryOperations
attributeConverterRegistry, conversionService, dateTimeProvider, entityEventRegistry, runtimeEntityRegistry -
Method Summary
Modifier and TypeMethodDescription@NonNull ExecutorAsyncOperationsasync()voidclose()<T> longcount(PagedQuery<T> pagedQuery) Counts all results for the given query.protected ResultReader<ResultSet,String> protected SqlTypeMapper<ResultSet,jakarta.persistence.Tuple> <T> intdelete(@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> Rexecute(@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> booleanexists(@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 List<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> TFind 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 ConnectionThis method will return the currently active connection for the current transaction or throw an exception if no transaction is present.@NonNull DataSourceprotected IntegerbooleanisSupportsBatchInsert(DefaultJdbcRepositoryOperations.JdbcOperationContext jdbcOperationContext, RuntimePersistentEntity<?> persistentEntity) Is supports batch insert.<T> Tpersist(@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.voidpersistManyAssociation(DefaultJdbcRepositoryOperations.JdbcOperationContext ctx, RuntimeAssociation runtimeAssociation, Object value, RuntimePersistentEntity<Object> persistentEntity, Object child, RuntimePersistentEntity<Object> childPersistentEntity) Persist JOIN table relationship.voidpersistManyAssociationBatch(DefaultJdbcRepositoryOperations.JdbcOperationContext ctx, RuntimeAssociation runtimeAssociation, Object value, RuntimePersistentEntity<Object> persistentEntity, Iterable<Object> child, RuntimePersistentEntity<Object> childPersistentEntity) Persist JOIN table relationships in batch.<T> TpersistOne(DefaultJdbcRepositoryOperations.JdbcOperationContext ctx, T value, RuntimePersistentEntity<T> persistentEntity) Persist one entity during cascade.<R> RprepareStatement(@NonNull String sql, @NonNull PreparedStatementCallback<R> callback) Execute the given operation with the given callback.@NonNull ReactiveRepositoryOperationsreactive()<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> EreadEntity(@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> Tupdate(@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> TupdateOne(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, replaceQueryPlaceholders, resolveAssociationInsert, resolveEntityInsert, resolveEntityUpdate, resolveSqlInsertAssociation, setStatementParameterMethods inherited from class io.micronaut.data.runtime.operations.internal.AbstractRepositoryOperations
checkOptimisticLocking, getApplicationContext, getConversionService, getEntity, getIdReader, isOnlySingleEndedJoins, triggerPostLoadMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface io.micronaut.context.ApplicationContextProvider
getApplicationContextMethods inherited from interface io.micronaut.core.convert.ConversionServiceProvider
getConversionServiceMethods inherited from interface io.micronaut.data.operations.HintsCapableRepository
getQueryHintsMethods inherited from interface io.micronaut.data.jdbc.runtime.JdbcOperations
readDTO, readEntityMethods inherited from interface io.micronaut.data.operations.RepositoryOperations
executeDelete, getEntityMethods inherited from interface io.micronaut.data.runtime.operations.internal.SyncCascadeOperations.SyncCascadeOperationsHelper
isSupportsBatchDelete, isSupportsBatchUpdate
-
Method Details
-
createColumnNameResultSetReaderWithColumnExistenceAware
- Overrides:
createColumnNameResultSetReaderWithColumnExistenceAwarein 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:
getFirstResultSetIndexin classAbstractSqlRepositoryOperations<ResultSet,PreparedStatement, SQLException> - Returns:
- The first result set index.
-
createTupleMapper
- Specified by:
createTupleMapperin classAbstractSqlRepositoryOperations<ResultSet,PreparedStatement, SQLException>
-
persistOne
public <T> T persistOne(DefaultJdbcRepositoryOperations.JdbcOperationContext ctx, T value, RuntimePersistentEntity<T> persistentEntity) Description copied from interface:SyncCascadeOperations.SyncCascadeOperationsHelperPersist one entity during cascade.- Specified by:
persistOnein 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.SyncCascadeOperationsHelperPersist multiple entities in batch during cascade.- Specified by:
persistBatchin 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.SyncCascadeOperationsHelperUpdate one entity during cascade.- Specified by:
updateOnein 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.SyncCascadeOperationsHelperPersist JOIN table relationship.- Specified by:
persistManyAssociationin 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.SyncCascadeOperationsHelperPersist JOIN table relationships in batch.- Specified by:
persistManyAssociationBatchin 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:
asyncin interfaceAsyncCapableRepository- Returns:
- The async operations.
-
reactive
- Specified by:
reactivein interfaceReactiveCapableRepository- Returns:
- The reactive operations instance.
-
findOne
Description copied from interface:RepositoryOperationsFind one by Query.- Specified by:
findOnein 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:RepositoryOperationsExecute a query that checks for existence.- Specified by:
existsin 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:RepositoryOperationsFinds all results for the given query.- Specified by:
findStreamin interfaceRepositoryOperations- Type Parameters:
T- The entity typeR- The result type- Parameters:
preparedQuery- The prepared query- Returns:
- An iterable result
-
findAll
Description copied from interface:RepositoryOperationsFinds all results for the given query.- Specified by:
findAllin 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:RepositoryOperationsExecutes 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:
executeUpdatein interfaceRepositoryOperations- Parameters:
pq- The prepared query- Returns:
- An optional number with the count of the number of records updated
-
execute
Description copied from interface:RepositoryOperationsExecutes the given query with parameter values returning a result.- Specified by:
executein interfaceRepositoryOperations- Type Parameters:
R- The result type- Parameters:
pq- The prepared query- Returns:
- The result
-
deleteAll
Description copied from interface:RepositoryOperationsDeletes all the entities of the given type.- Specified by:
deleteAllin interfaceRepositoryOperations- Type Parameters:
T- The generic type- Parameters:
operation- The operation- Returns:
- The number of entities deleted
-
delete
Description copied from interface:RepositoryOperationsDeletes the entity.- Specified by:
deletein interfaceRepositoryOperations- Type Parameters:
T- The generic type- Parameters:
operation- The operation- Returns:
- The number of entities deleted
-
deleteReturning
Description copied from interface:DeleteReturningRepositoryOperationsDeletes the entity and returns a result.- Specified by:
deleteReturningin interfaceDeleteReturningRepositoryOperations- Type Parameters:
E- The entity typeR- The result type- Parameters:
operation- The operation- Returns:
- The deleted entity
-
deleteAllReturning
Description copied from interface:DeleteReturningRepositoryOperationsDeletes the entities and returns a result.- Specified by:
deleteAllReturningin interfaceDeleteReturningRepositoryOperations- Type Parameters:
E- The entity typeR- The result type- Parameters:
operation- The operation- Returns:
- The deleted entities
-
update
Description copied from interface:RepositoryOperationsUpdates the entity for the given operation.- Specified by:
updatein 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:RepositoryOperationsUpdates the entities for the given operation.- Specified by:
updateAllin interfaceRepositoryOperations- Type Parameters:
T- The generic type- Parameters:
operation- The operation- Returns:
- The updated entities
-
persist
Description copied from interface:RepositoryOperationsPersist the operation returning a possibly new entity.- Specified by:
persistin interfaceRepositoryOperations- Type Parameters:
T- The generic type- Parameters:
operation- The operation- Returns:
- The operation
-
findOne
Description copied from interface:RepositoryOperationsFind one by ID.- Specified by:
findOnein interfaceRepositoryOperations- Type Parameters:
T- The generic type- Parameters:
type- The typeid- The id- Returns:
- A result or null
-
findAll
Description copied from interface:RepositoryOperationsFinds all results for the given query.- Specified by:
findAllin interfaceRepositoryOperations- Type Parameters:
T- The generic type- Parameters:
query- The root entity- Returns:
- An iterable result
-
count
Description copied from interface:RepositoryOperationsCounts all results for the given query.- Specified by:
countin interfaceRepositoryOperations- Type Parameters:
T- The generic type- Parameters:
pagedQuery- The paged query- Returns:
- An iterable result
-
findStream
Description copied from interface:RepositoryOperationsFinds a stream for the given arguments.- Specified by:
findStreamin interfaceRepositoryOperations- Type Parameters:
T- The generic type- Parameters:
query- The query- Returns:
- The stream
-
findPage
Description copied from interface:RepositoryOperationsFind a page for the given entity and pageable.- Specified by:
findPagein 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:RepositoryOperationsPersist all the given entities.- Specified by:
persistAllin interfaceRepositoryOperations- Type Parameters:
T- The generic type- Parameters:
operation- The operation- Returns:
- The entities, possibly mutated
-
close
@PreDestroy public void close()- Specified by:
closein interfaceAutoCloseable
-
getDataSource
- Specified by:
getDataSourcein interfaceJdbcOperations- Returns:
- The backing data source.
-
getConnection
Description copied from interface:JdbcOperationsThis method will return the currently active connection for the current transaction or throw an exception if no transaction is present.- Specified by:
getConnectionin interfaceJdbcOperations- Returns:
- The current connection for the active transaction.
-
execute
Description copied from interface:JdbcOperationsExecute the given operation with the given callback.- Specified by:
executein 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:JdbcOperationsExecute the given operation with the given callback.- Specified by:
prepareStatementin 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:JdbcOperationsMap a result set to a stream of the given type.- Specified by:
entityStreamin 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:JdbcOperationsRead an entity using the given prefix to be passes to result set lookups.- Specified by:
readEntityin 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:JdbcOperationsRead an entity using the given prefix to be passes to result set lookups.- Specified by:
readDTOin 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:JdbcOperationsMap a result set to a stream of the given type.- Specified by:
entityStreamin 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.SyncCascadeOperationsHelperIs supports batch insert.- Specified by:
isSupportsBatchInsertin interfaceSyncCascadeOperations.SyncCascadeOperationsHelper<DefaultJdbcRepositoryOperations.JdbcOperationContext>- Parameters:
jdbcOperationContext- The contextpersistentEntity- The persistent entity- Returns:
- True if supports
-