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
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
-
Constructor Summary
ModifierConstructorDescriptionprotected
DefaultJdbcRepositoryOperations
(String dataSourceName, DataJdbcConfiguration jdbcConfiguration, DataSource dataSource, ConnectionOperations<Connection> connectionOperations, TransactionOperations<Connection> transactionOperations, @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. -
Method Summary
Modifier and TypeMethodDescription@NonNull ExecutorAsyncOperations
async()
void
close()
<T> long
count
(PagedQuery<T> pagedQuery) Counts all results for the given query.<T> int
delete
(@NonNull DeleteOperation<T> operation) Deletes the entity.deleteAll
(@NonNull DeleteBatchOperation<T> operation) Deletes all the entities of the given type.<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.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
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
createQueryResultMapper, decorate, decorate, getJsonColumn, getJsonDataType, getSqlPreparedQuery, getSqlStoredQuery, handleSqlException, isJsonEntityGeneratedId, isJsonResult, isSupportsBatchDelete, isSupportsBatchInsert, isSupportsBatchUpdate, mapQueryColumnResult, 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
-
Constructor Details
-
DefaultJdbcRepositoryOperations
@Internal protected DefaultJdbcRepositoryOperations(@Parameter String dataSourceName, @Parameter DataJdbcConfiguration jdbcConfiguration, DataSource dataSource, @Parameter ConnectionOperations<Connection> connectionOperations, @Parameter TransactionOperations<Connection> transactionOperations, @Named("io") @Nullable @Nullable ExecutorService executorService, io.micronaut.context.BeanContext beanContext, @NonNull @NonNull DateTimeProvider dateTimeProvider, RuntimeEntityRegistry entityRegistry, DataConversionService conversionService, AttributeConverterRegistry attributeConverterRegistry, @Nullable @Nullable SchemaTenantResolver schemaTenantResolver, JdbcSchemaHandler schemaHandler, @Nullable @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 providerconnectionOperations
-
-
-
Method Details
-
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
-
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
-
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
-