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, io.micronaut.data.operations.async.AsyncCapableRepository, io.micronaut.data.operations.DeleteReturningRepositoryOperations, io.micronaut.data.operations.HintsCapableRepository, io.micronaut.data.operations.reactive.ReactiveCapableRepository, io.micronaut.data.operations.RepositoryOperations, io.micronaut.data.runtime.operations.internal.SyncCascadeOperations.SyncCascadeOperationsHelper<DefaultJdbcRepositoryOperations.JdbcOperationContext>, io.micronaut.data.runtime.query.MethodContextAwareStoredQueryDecorator, io.micronaut.data.runtime.query.PreparedQueryDecorator, AutoCloseable

@EachBean(javax.sql.DataSource.class) @Internal public final class DefaultJdbcRepositoryOperations extends io.micronaut.data.runtime.operations.internal.sql.AbstractSqlRepositoryOperations<ResultSet,PreparedStatement,SQLException> implements JdbcRepositoryOperations, io.micronaut.data.operations.DeleteReturningRepositoryOperations, io.micronaut.data.operations.async.AsyncCapableRepository, io.micronaut.data.operations.reactive.ReactiveCapableRepository, AutoCloseable, io.micronaut.data.runtime.operations.internal.SyncCascadeOperations.SyncCascadeOperationsHelper<DefaultJdbcRepositoryOperations.JdbcOperationContext>
Implementation of JdbcRepositoryOperations.
Since:
1.0.0
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    protected static class 
     

    Nested classes/interfaces inherited from class io.micronaut.data.runtime.operations.internal.sql.AbstractSqlRepositoryOperations

    io.micronaut.data.runtime.operations.internal.sql.AbstractSqlRepositoryOperations.StatementSupplier<PS extends Object>
  • 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 Type
    Method
    Description
    @NonNull io.micronaut.data.runtime.operations.ExecutorAsyncOperations
     
    void
     
    <T> long
    count(io.micronaut.data.model.runtime.PagedQuery<T> pagedQuery)
     
    <T> int
    delete(@NonNull io.micronaut.data.model.runtime.DeleteOperation<T> operation)
     
    deleteAll(@NonNull io.micronaut.data.model.runtime.DeleteBatchOperation<T> operation)
     
    <E, R> List<R>
    deleteAllReturning(io.micronaut.data.model.runtime.DeleteReturningBatchOperation<E,R> operation)
     
    <E, R> R
    deleteReturning(io.micronaut.data.model.runtime.DeleteReturningOperation<E,R> operation)
     
    <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(io.micronaut.data.model.runtime.PreparedQuery<?,R> pq)
     
    @NonNull Optional<Number>
    executeUpdate(@NonNull io.micronaut.data.model.runtime.PreparedQuery<?,Number> pq)
     
    <T> boolean
    exists(@NonNull io.micronaut.data.model.runtime.PreparedQuery<T,Boolean> pq)
     
    <T> @NonNull Iterable<T>
    findAll(@NonNull io.micronaut.data.model.runtime.PagedQuery<T> query)
     
    <T, R> @NonNull Iterable<R>
    findAll(@NonNull io.micronaut.data.model.runtime.PreparedQuery<T,R> preparedQuery)
     
    <T, R> R
    findOne(@NonNull io.micronaut.data.model.runtime.PreparedQuery<T,R> pq)
     
    <T> T
    findOne(@NonNull Class<T> type, @NonNull Object id)
     
    <R> io.micronaut.data.model.Page<R>
    findPage(@NonNull io.micronaut.data.model.runtime.PagedQuery<R> query)
     
    <T> @NonNull Stream<T>
    findStream(@NonNull io.micronaut.data.model.runtime.PagedQuery<T> query)
     
    <T, R> @NonNull Stream<R>
    findStream(@NonNull io.micronaut.data.model.runtime.PreparedQuery<T,R> preparedQuery)
     
    @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, io.micronaut.data.model.runtime.RuntimePersistentEntity<?> persistentEntity)
     
    <T> T
    persist(@NonNull io.micronaut.data.model.runtime.InsertOperation<T> operation)
     
    <T> @NonNull Iterable<T>
    persistAll(@NonNull io.micronaut.data.model.runtime.InsertBatchOperation<T> operation)
     
    <T> List<T>
    persistBatch(DefaultJdbcRepositoryOperations.JdbcOperationContext ctx, Iterable<T> values, io.micronaut.data.model.runtime.RuntimePersistentEntity<T> childPersistentEntity, Predicate<T> predicate)
     
    void
    persistManyAssociation(DefaultJdbcRepositoryOperations.JdbcOperationContext ctx, io.micronaut.data.model.runtime.RuntimeAssociation runtimeAssociation, Object value, io.micronaut.data.model.runtime.RuntimePersistentEntity<Object> persistentEntity, Object child, io.micronaut.data.model.runtime.RuntimePersistentEntity<Object> childPersistentEntity)
     
    void
    persistManyAssociationBatch(DefaultJdbcRepositoryOperations.JdbcOperationContext ctx, io.micronaut.data.model.runtime.RuntimeAssociation runtimeAssociation, Object value, io.micronaut.data.model.runtime.RuntimePersistentEntity<Object> persistentEntity, Iterable<Object> child, io.micronaut.data.model.runtime.RuntimePersistentEntity<Object> childPersistentEntity)
     
    <T> T
    persistOne(DefaultJdbcRepositoryOperations.JdbcOperationContext ctx, T value, io.micronaut.data.model.runtime.RuntimePersistentEntity<T> persistentEntity)
     
    <R> R
    prepareStatement(@NonNull String sql, @NonNull PreparedStatementCallback<R> callback)
    Execute the given operation with the given callback.
    @NonNull io.micronaut.data.operations.reactive.ReactiveRepositoryOperations
     
    <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 io.micronaut.data.model.runtime.UpdateOperation<T> operation)
     
    <T> @NonNull Iterable<T>
    updateAll(@NonNull io.micronaut.data.model.runtime.UpdateBatchOperation<T> operation)
     
    <T> T
    updateOne(DefaultJdbcRepositoryOperations.JdbcOperationContext ctx, T value, io.micronaut.data.model.runtime.RuntimePersistentEntity<T> persistentEntity)
     

    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

    • getFirstResultSetIndex

      protected Integer getFirstResultSetIndex()
      Specified by:
      getFirstResultSetIndex in class io.micronaut.data.runtime.operations.internal.sql.AbstractSqlRepositoryOperations<ResultSet,PreparedStatement,SQLException>
    • persistOne

      public <T> T persistOne(DefaultJdbcRepositoryOperations.JdbcOperationContext ctx, T value, io.micronaut.data.model.runtime.RuntimePersistentEntity<T> persistentEntity)
      Specified by:
      persistOne in interface io.micronaut.data.runtime.operations.internal.SyncCascadeOperations.SyncCascadeOperationsHelper<DefaultJdbcRepositoryOperations.JdbcOperationContext>
    • persistBatch

      public <T> List<T> persistBatch(DefaultJdbcRepositoryOperations.JdbcOperationContext ctx, Iterable<T> values, io.micronaut.data.model.runtime.RuntimePersistentEntity<T> childPersistentEntity, Predicate<T> predicate)
      Specified by:
      persistBatch in interface io.micronaut.data.runtime.operations.internal.SyncCascadeOperations.SyncCascadeOperationsHelper<DefaultJdbcRepositoryOperations.JdbcOperationContext>
    • updateOne

      public <T> T updateOne(DefaultJdbcRepositoryOperations.JdbcOperationContext ctx, T value, io.micronaut.data.model.runtime.RuntimePersistentEntity<T> persistentEntity)
      Specified by:
      updateOne in interface io.micronaut.data.runtime.operations.internal.SyncCascadeOperations.SyncCascadeOperationsHelper<DefaultJdbcRepositoryOperations.JdbcOperationContext>
    • persistManyAssociation

      public void persistManyAssociation(DefaultJdbcRepositoryOperations.JdbcOperationContext ctx, io.micronaut.data.model.runtime.RuntimeAssociation runtimeAssociation, Object value, io.micronaut.data.model.runtime.RuntimePersistentEntity<Object> persistentEntity, Object child, io.micronaut.data.model.runtime.RuntimePersistentEntity<Object> childPersistentEntity)
      Specified by:
      persistManyAssociation in interface io.micronaut.data.runtime.operations.internal.SyncCascadeOperations.SyncCascadeOperationsHelper<DefaultJdbcRepositoryOperations.JdbcOperationContext>
    • persistManyAssociationBatch

      public void persistManyAssociationBatch(DefaultJdbcRepositoryOperations.JdbcOperationContext ctx, io.micronaut.data.model.runtime.RuntimeAssociation runtimeAssociation, Object value, io.micronaut.data.model.runtime.RuntimePersistentEntity<Object> persistentEntity, Iterable<Object> child, io.micronaut.data.model.runtime.RuntimePersistentEntity<Object> childPersistentEntity)
      Specified by:
      persistManyAssociationBatch in interface io.micronaut.data.runtime.operations.internal.SyncCascadeOperations.SyncCascadeOperationsHelper<DefaultJdbcRepositoryOperations.JdbcOperationContext>
    • async

      @NonNull public @NonNull io.micronaut.data.runtime.operations.ExecutorAsyncOperations async()
      Specified by:
      async in interface io.micronaut.data.operations.async.AsyncCapableRepository
    • reactive

      @NonNull public @NonNull io.micronaut.data.operations.reactive.ReactiveRepositoryOperations reactive()
      Specified by:
      reactive in interface io.micronaut.data.operations.reactive.ReactiveCapableRepository
    • findOne

      @Nullable public <T, R> R findOne(@NonNull @NonNull io.micronaut.data.model.runtime.PreparedQuery<T,R> pq)
      Specified by:
      findOne in interface io.micronaut.data.operations.RepositoryOperations
    • exists

      public <T> boolean exists(@NonNull @NonNull io.micronaut.data.model.runtime.PreparedQuery<T,Boolean> pq)
      Specified by:
      exists in interface io.micronaut.data.operations.RepositoryOperations
    • findStream

      @NonNull public <T, R> @NonNull Stream<R> findStream(@NonNull @NonNull io.micronaut.data.model.runtime.PreparedQuery<T,R> preparedQuery)
      Specified by:
      findStream in interface io.micronaut.data.operations.RepositoryOperations
    • findAll

      @NonNull public <T, R> @NonNull Iterable<R> findAll(@NonNull @NonNull io.micronaut.data.model.runtime.PreparedQuery<T,R> preparedQuery)
      Specified by:
      findAll in interface io.micronaut.data.operations.RepositoryOperations
    • executeUpdate

      @NonNull public @NonNull Optional<Number> executeUpdate(@NonNull @NonNull io.micronaut.data.model.runtime.PreparedQuery<?,Number> pq)
      Specified by:
      executeUpdate in interface io.micronaut.data.operations.RepositoryOperations
    • execute

      public <R> List<R> execute(io.micronaut.data.model.runtime.PreparedQuery<?,R> pq)
      Specified by:
      execute in interface io.micronaut.data.operations.RepositoryOperations
    • deleteAll

      public <T> Optional<Number> deleteAll(@NonNull @NonNull io.micronaut.data.model.runtime.DeleteBatchOperation<T> operation)
      Specified by:
      deleteAll in interface io.micronaut.data.operations.RepositoryOperations
    • delete

      public <T> int delete(@NonNull @NonNull io.micronaut.data.model.runtime.DeleteOperation<T> operation)
      Specified by:
      delete in interface io.micronaut.data.operations.RepositoryOperations
    • deleteReturning

      public <E, R> R deleteReturning(io.micronaut.data.model.runtime.DeleteReturningOperation<E,R> operation)
      Specified by:
      deleteReturning in interface io.micronaut.data.operations.DeleteReturningRepositoryOperations
    • deleteAllReturning

      public <E, R> List<R> deleteAllReturning(io.micronaut.data.model.runtime.DeleteReturningBatchOperation<E,R> operation)
      Specified by:
      deleteAllReturning in interface io.micronaut.data.operations.DeleteReturningRepositoryOperations
    • update

      @NonNull public <T> T update(@NonNull @NonNull io.micronaut.data.model.runtime.UpdateOperation<T> operation)
      Specified by:
      update in interface io.micronaut.data.operations.RepositoryOperations
    • updateAll

      @NonNull public <T> @NonNull Iterable<T> updateAll(@NonNull @NonNull io.micronaut.data.model.runtime.UpdateBatchOperation<T> operation)
      Specified by:
      updateAll in interface io.micronaut.data.operations.RepositoryOperations
    • persist

      @NonNull public <T> T persist(@NonNull @NonNull io.micronaut.data.model.runtime.InsertOperation<T> operation)
      Specified by:
      persist in interface io.micronaut.data.operations.RepositoryOperations
    • findOne

      @Nullable public <T> T findOne(@NonNull @NonNull Class<T> type, @NonNull @NonNull Object id)
      Specified by:
      findOne in interface io.micronaut.data.operations.RepositoryOperations
    • findAll

      @NonNull public <T> @NonNull Iterable<T> findAll(@NonNull @NonNull io.micronaut.data.model.runtime.PagedQuery<T> query)
      Specified by:
      findAll in interface io.micronaut.data.operations.RepositoryOperations
    • count

      public <T> long count(io.micronaut.data.model.runtime.PagedQuery<T> pagedQuery)
      Specified by:
      count in interface io.micronaut.data.operations.RepositoryOperations
    • findStream

      @NonNull public <T> @NonNull Stream<T> findStream(@NonNull @NonNull io.micronaut.data.model.runtime.PagedQuery<T> query)
      Specified by:
      findStream in interface io.micronaut.data.operations.RepositoryOperations
    • findPage

      public <R> io.micronaut.data.model.Page<R> findPage(@NonNull @NonNull io.micronaut.data.model.runtime.PagedQuery<R> query)
      Specified by:
      findPage in interface io.micronaut.data.operations.RepositoryOperations
    • persistAll

      @NonNull public <T> @NonNull Iterable<T> persistAll(@NonNull @NonNull io.micronaut.data.model.runtime.InsertBatchOperation<T> operation)
      Specified by:
      persistAll in interface io.micronaut.data.operations.RepositoryOperations
    • close

      @PreDestroy public void close()
      Specified by:
      close in interface AutoCloseable
    • getDataSource

      @NonNull public @NonNull DataSource getDataSource()
      Specified by:
      getDataSource in interface JdbcOperations
      Returns:
      The backing data source.
    • getConnection

      @NonNull public @NonNull Connection 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 interface JdbcOperations
      Returns:
      The current connection for the active transaction.
    • execute

      @NonNull public <R> R execute(@NonNull @NonNull ConnectionCallback<R> callback)
      Description copied from interface: JdbcOperations
      Execute the given operation with the given callback.
      Specified by:
      execute in interface JdbcOperations
      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 interface JdbcOperations
      Type Parameters:
      R - The result type
      Parameters:
      sql - The SQL
      callback - 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 interface JdbcOperations
      Type Parameters:
      T - The generic type
      Parameters:
      resultSet - The result set
      rootEntity - 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 io.micronaut.data.exceptions.DataAccessException
      Description copied from interface: JdbcOperations
      Read an entity using the given prefix to be passes to result set lookups.
      Specified by:
      readEntity in interface JdbcOperations
      Type Parameters:
      E - The entity generic type
      Parameters:
      prefix - The prefix
      resultSet - The result set
      type - The entity type
      Returns:
      The entity result
      Throws:
      io.micronaut.data.exceptions.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 io.micronaut.data.exceptions.DataAccessException
      Description copied from interface: JdbcOperations
      Read an entity using the given prefix to be passes to result set lookups.
      Specified by:
      readDTO in interface JdbcOperations
      Type Parameters:
      E - The entity generic type
      D - The DTO generic type
      Parameters:
      prefix - The prefix
      resultSet - The result set
      rootEntity - The entity type
      dtoType - The DTO type. Must be annotated with Introspected
      Returns:
      The entity result
      Throws:
      io.micronaut.data.exceptions.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 interface JdbcOperations
      Type Parameters:
      T - The generic type
      Parameters:
      resultSet - The result set
      prefix - The prefix to use for each column name that is mapped
      rootEntity - The entity type
      Returns:
      The stream
    • isSupportsBatchInsert

      public boolean isSupportsBatchInsert(DefaultJdbcRepositoryOperations.JdbcOperationContext jdbcOperationContext, io.micronaut.data.model.runtime.RuntimePersistentEntity<?> persistentEntity)
      Specified by:
      isSupportsBatchInsert in interface io.micronaut.data.runtime.operations.internal.SyncCascadeOperations.SyncCascadeOperationsHelper<DefaultJdbcRepositoryOperations.JdbcOperationContext>