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,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, 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, QUERY_LOG, queryBuilders, repositoriesWithHardcodedDataSource, sqlJsonColumnMapperProviderFields inherited from class io.micronaut.data.runtime.operations.internal.AbstractRepositoryOperations
attributeConverterRegistry, conversionService, dateTimeProvider, entityEventRegistry, runtimeEntityRegistry -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedDefaultJdbcRepositoryOperations(String dataSourceName, DataJdbcConfiguration jdbcConfiguration, DataSource dataSource, TransactionOperations<Connection> transactionOperations, ExecutorService executorService, io.micronaut.context.BeanContext beanContext, DateTimeProvider dateTimeProvider, RuntimeEntityRegistry entityRegistry, DataConversionService conversionService, AttributeConverterRegistry attributeConverterRegistry, SchemaTenantResolver schemaTenantResolver, JdbcSchemaHandler schemaHandler, io.micronaut.json.JsonMapper jsonMapper, SqlJsonColumnMapperProvider<ResultSet> sqlJsonColumnMapperProvider) Default constructor. -
Method Summary
Modifier and TypeMethodDescriptionasync()voidclose()<T> longcount(PagedQuery<T> pagedQuery) Counts all results for the given query.<T> intdelete(DeleteOperation<T> operation) Deletes the entity.deleteAll(DeleteBatchOperation<T> operation) Deletes all the entities of the given type.<T> Stream<T>entityStream(ResultSet resultSet, Class<T> rootEntity) Map a result set to a stream of the given type.<T> Stream<T>entityStream(ResultSet resultSet, String prefix, Class<T> rootEntity) Map a result set to a stream of the given type.<R> Rexecute(ConnectionCallback<R> callback) Execute the given operation with the given callback.executeUpdate(PreparedQuery<?, Number> pq) Executes an update for the given query and parameter values.<T> booleanexists(PreparedQuery<T, Boolean> pq) Execute a query that checks for existence.<T> Iterable<T>findAll(PagedQuery<T> query) Finds all results for the given query.<T,R> Iterable<R> findAll(PreparedQuery<T, R> preparedQuery) Finds all results for the given query.<T,R> R findOne(PreparedQuery<T, R> pq) Find one by Query.<T> TfindOne(Class<T> type, Serializable id) Find one by ID.<R> Page<R>findPage(PagedQuery<R> query) Find a page for the given entity and pageable.<T> Stream<T>findStream(PagedQuery<T> query) Finds a stream for the given arguments.<T,R> Stream<R> findStream(PreparedQuery<T, R> preparedQuery) Finds all results for the given query.This method will return the currently active connection for the current transaction or throw an exception if no transaction is present.booleanisSupportsBatchInsert(DefaultJdbcRepositoryOperations.JdbcOperationContext jdbcOperationContext, RuntimePersistentEntity<?> persistentEntity) Is supports batch insert.<T> Tpersist(InsertOperation<T> operation) Persist the operation returning a possibly new entity.<T> Iterable<T>persistAll(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(String sql, PreparedStatementCallback<R> callback) Execute the given operation with the given callback.reactive()<E,D> D Read an entity using the given prefix to be passes to result set lookups.<E> EreadEntity(String prefix, ResultSet resultSet, Class<E> type) Read an entity using the given prefix to be passes to result set lookups.<T> Tupdate(UpdateOperation<T> operation) Updates the entity for the given operation.<T> Iterable<T>updateAll(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
createQueryResultMapper, decorate, decorate, getJsonColumn, getJsonDataType, getSqlPreparedQuery, getSqlStoredQuery, handleSqlException, isJsonEntityGeneratedId, isJsonResult, isSupportsBatchDelete, isSupportsBatchInsert, isSupportsBatchUpdate, mapQueryColumnResult, prepareStatement, 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
-
Constructor Details
-
DefaultJdbcRepositoryOperations
@Internal protected DefaultJdbcRepositoryOperations(@Parameter String dataSourceName, @Parameter DataJdbcConfiguration jdbcConfiguration, DataSource dataSource, @Parameter TransactionOperations<Connection> transactionOperations, @Named("io") @Nullable ExecutorService executorService, io.micronaut.context.BeanContext beanContext, @NonNull DateTimeProvider dateTimeProvider, RuntimeEntityRegistry entityRegistry, DataConversionService conversionService, AttributeConverterRegistry attributeConverterRegistry, @Nullable SchemaTenantResolver schemaTenantResolver, JdbcSchemaHandler schemaHandler, @Nullable io.micronaut.json.JsonMapper jsonMapper, SqlJsonColumnMapperProvider<ResultSet> sqlJsonColumnMapperProvider) Default constructor.- Parameters:
dataSourceName- The data source namejdbcConfiguration- The jdbcConfigurationdataSource- The datasourcetransactionOperations- The JDBC operations for the data sourceexecutorService- The executor servicebeanContext- The bean contextdateTimeProvider- The dateTimeProviderentityRegistry- The entity registryconversionService- The conversion serviceattributeConverterRegistry- The attribute converter registryschemaTenantResolver- The schema tenant resolverschemaHandler- The schema handlerjsonMapper- The JSON mappersqlJsonColumnMapperProvider- The SQL JSON column mapper provider
-
-
Method Details
-
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
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
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
-
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
-
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
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
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 String sql, @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> Stream<T> entityStream(@NonNull ResultSet resultSet, @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 String prefix, @NonNull ResultSet resultSet, @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 String prefix, @NonNull ResultSet resultSet, @NonNull Class<E> rootEntity, @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> Stream<T> entityStream(@NonNull ResultSet resultSet, @Nullable String prefix, @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
-