Class SpannerTemplate

java.lang.Object
com.google.cloud.spring.data.spanner.core.SpannerTemplate
All Implemented Interfaces:
SpannerOperations, org.springframework.beans.factory.Aware, org.springframework.context.ApplicationEventPublisherAware

public class SpannerTemplate extends Object implements SpannerOperations, org.springframework.context.ApplicationEventPublisherAware
An implementation of SpannerOperations.
Since:
1.1
  • Constructor Details

  • Method Details

    • setApplicationEventPublisher

      public void setApplicationEventPublisher(org.springframework.context.ApplicationEventPublisher applicationEventPublisher)
      Specified by:
      setApplicationEventPublisher in interface org.springframework.context.ApplicationEventPublisherAware
    • getReadContext

      protected com.google.cloud.spanner.ReadContext getReadContext()
    • getReadContext

      protected com.google.cloud.spanner.ReadContext getReadContext(com.google.cloud.spanner.TimestampBound timestampBound)
    • getMappingContext

      public SpannerMappingContext getMappingContext()
    • getSpannerEntityProcessor

      public SpannerEntityProcessor getSpannerEntityProcessor()
    • executeDmlStatement

      public long executeDmlStatement(com.google.cloud.spanner.Statement statement)
      Description copied from interface: SpannerOperations
      Execute a DML statement on Cloud Spanner. This must always be done in a transaction and one will be started if needed. See SpannerOperations.executePartitionedDmlStatement(Statement) for executing partitioned DML without a transaction.
      Specified by:
      executeDmlStatement in interface SpannerOperations
      Parameters:
      statement - the DML statement to execute.
      Returns:
      the number of rows affected.
    • executePartitionedDmlStatement

      public long executePartitionedDmlStatement(com.google.cloud.spanner.Statement statement)
      Description copied from interface: SpannerOperations
      Execute a DML statement in partitioned mode. This is not available inside of transactions.
      Specified by:
      executePartitionedDmlStatement in interface SpannerOperations
      Parameters:
      statement - the DML statement to execute.
      Returns:
      the lower-bound of number of rows affected.
    • executePartitionedDmlStatement

      public long executePartitionedDmlStatement(com.google.cloud.spanner.Statement statement, com.google.cloud.spanner.Options.UpdateOption... options)
      Description copied from interface: SpannerOperations
      Execute a DML statement in partitioned mode. This is not available inside of transactions.
      Specified by:
      executePartitionedDmlStatement in interface SpannerOperations
      Parameters:
      statement - the DML statement to execute.
      options - marks options applicable to update operation.
      Returns:
      the lower-bound of number of rows affected.
    • read

      public <T> T read(Class<T> entityClass, com.google.cloud.spanner.Key key)
      Description copied from interface: SpannerOperations
      Finds a single stored object using a key.
      Specified by:
      read in interface SpannerOperations
      Type Parameters:
      T - the type of the object to retrieve.
      Parameters:
      entityClass - the type of the object to retrieve.
      key - the key of the object.
      Returns:
      an object of the requested type. Returns null if no object could be found stored with the given key.
    • existsById

      public <T> boolean existsById(Class<T> entityClass, com.google.cloud.spanner.Key key)
      Description copied from interface: SpannerOperations
      Returns whether an entity with the given id exists.
      Specified by:
      existsById in interface SpannerOperations
      Type Parameters:
      T - the type of the object to check.
      Parameters:
      entityClass - the type of the entity
      key - the key of the object
      Returns:
      true if an entity with the given key exists, false otherwise.
    • read

      public <T> T read(Class<T> entityClass, com.google.cloud.spanner.Key key, SpannerReadOptions options)
      Description copied from interface: SpannerOperations
      Finds a single stored object using a key.
      Specified by:
      read in interface SpannerOperations
      Type Parameters:
      T - the type of the object to retrieve.
      Parameters:
      entityClass - the type of the object to retrieve.
      key - the key of the object.
      options - the Cloud Spanner read options with which to conduct the read operation.
      Returns:
      an object of the requested type. Returns null if no object could be found stored with the given key.
    • read

      public <T> List<T> read(Class<T> entityClass, com.google.cloud.spanner.KeySet keys)
      Description copied from interface: SpannerOperations
      Finds objects stored from their keys.
      Specified by:
      read in interface SpannerOperations
      Type Parameters:
      T - the type of the object to retrieve.
      Parameters:
      entityClass - the type of the object to retrieve.
      keys - the keys of the objects to retrieve.
      Returns:
      a list of objects that could be found using the given keys. If no keys could be found the list will be empty.
    • read

      public <T> List<T> read(Class<T> entityClass, com.google.cloud.spanner.KeySet keys, SpannerReadOptions options)
      Description copied from interface: SpannerOperations
      Finds objects stored from their keys. When the entity has a Where class annotation or any of the properties is eagerly interleaved, the SQL query will be performed instead of the ReadContext.read(java.lang.String, com.google.cloud.spanner.KeySet, java.lang.Iterable<java.lang.String>, com.google.cloud.spanner.Options.ReadOption...) to fetch such properties and satisfy the sql where condition.
      Specified by:
      read in interface SpannerOperations
      Type Parameters:
      T - the type of the object to retrieve.
      Parameters:
      entityClass - the type of the object to retrieve.
      keys - the keys of the objects to retrieve.
      options - the Cloud Spanner read options with which to conduct the read operation.
      Returns:
      a list of objects that could be found using the given keys. If no keys could be found the list will be empty.
    • query

      public <A> List<A> query(Function<com.google.cloud.spanner.Struct,A> rowFunc, com.google.cloud.spanner.Statement statement, SpannerQueryOptions options)
      Description copied from interface: SpannerOperations
      Executes a given query string with tags and parameters and applies a given function to each row of the result.
      Specified by:
      query in interface SpannerOperations
      Type Parameters:
      A - the type to convert each row Struct into.
      Parameters:
      rowFunc - the function to apply to each row of the result.
      statement - the SQL statement used to select the objects.
      options - the options with which to run this query.
      Returns:
      a list of the rows each transformed with the given function.
    • query

      public <T> List<T> query(Class<T> entityClass, com.google.cloud.spanner.Statement statement, SpannerQueryOptions options)
      Description copied from interface: SpannerOperations
      Finds objects by using an SQL statement.
      Specified by:
      query in interface SpannerOperations
      Type Parameters:
      T - the type of object to retrieve.
      Parameters:
      entityClass - the type of object to retrieve.
      statement - the SQL statement used to select the objects.
      options - the Cloud Spanner read options with which to conduct the read operation.
      Returns:
      a list of the objects found. If no keys could be found the list will be empty.
    • readAll

      public <T> List<T> readAll(Class<T> entityClass, SpannerReadOptions options)
      Description copied from interface: SpannerOperations
      Finds all objects of the given type.
      Specified by:
      readAll in interface SpannerOperations
      Type Parameters:
      T - the type of the object to retrieve.
      Parameters:
      entityClass - the type of the object to retrieve.
      options - the Cloud Spanner read options with which to conduct the read operation.
      Returns:
      a list of all objects stored of the given type. If there are no objects an empty list is returned.
    • readAll

      public <T> List<T> readAll(Class<T> entityClass)
      Description copied from interface: SpannerOperations
      Finds all objects of the given type.
      Specified by:
      readAll in interface SpannerOperations
      Type Parameters:
      T - the type of the object to retrieve.
      Parameters:
      entityClass - the type of the object to retrieve.
      Returns:
      a list of all objects stored of the given type. If there are no objects an empty list is returned.
    • queryAll

      public <T> List<T> queryAll(Class<T> entityClass, SpannerPageableQueryOptions options)
      Description copied from interface: SpannerOperations
      Finds all objects of the given type.
      Specified by:
      queryAll in interface SpannerOperations
      Type Parameters:
      T - the type of the object to retrieve.
      Parameters:
      entityClass - the type of the object to retrieve.
      options - the Cloud Spanner query options with which to conduct the query operation.
      Returns:
      a list of all objects stored of the given type. If there are no objects an empty list is returned.
    • insert

      public void insert(Object object)
      Description copied from interface: SpannerOperations
      Insert an object into storage.
      Specified by:
      insert in interface SpannerOperations
      Parameters:
      object - the object to insert.
    • insertAll

      public void insertAll(Iterable<?> objects)
      Description copied from interface: SpannerOperations
      Insert objects into storage in batch.
      Specified by:
      insertAll in interface SpannerOperations
      Parameters:
      objects - the objects to insert.
    • update

      public void update(Object object)
      Description copied from interface: SpannerOperations
      Update an object already in storage.
      Specified by:
      update in interface SpannerOperations
      Parameters:
      object - the object to update.
    • updateAll

      public void updateAll(Iterable<?> objects)
      Description copied from interface: SpannerOperations
      Update objects in batch.
      Specified by:
      updateAll in interface SpannerOperations
      Parameters:
      objects - the objects to update.
    • update

      public void update(Object object, String... includeProperties)
      Description copied from interface: SpannerOperations
      Update an object in storage.
      Specified by:
      update in interface SpannerOperations
      Parameters:
      object - the object to update.
      includeProperties - the properties to upsert. if none are given then all properties are used
    • update

      public void update(Object object, Set<String> includeProperties)
      Description copied from interface: SpannerOperations
      Update an object in storage.
      Specified by:
      update in interface SpannerOperations
      Parameters:
      object - the object to update.
      includeProperties - the properties to update. If null is given, then all properties are used. Note that an empty Set means that no properties will be used.
    • upsert

      public void upsert(Object object)
      Description copied from interface: SpannerOperations
      Update or insert an object into storage.
      Specified by:
      upsert in interface SpannerOperations
      Parameters:
      object - the object to update or insert.
    • upsertAll

      public void upsertAll(Iterable<?> objects)
      Description copied from interface: SpannerOperations
      Update or insert objects into storage in batch.
      Specified by:
      upsertAll in interface SpannerOperations
      Parameters:
      objects - the objects to update or insert.
    • upsert

      public void upsert(Object object, String... includeProperties)
      Description copied from interface: SpannerOperations
      Update or insert an object into storage.
      Specified by:
      upsert in interface SpannerOperations
      Parameters:
      object - the object to update or insert.
      includeProperties - the properties to upsert. if none are given then all properties are upserted.
    • upsert

      public void upsert(Object object, Set<String> includeProperties)
      Description copied from interface: SpannerOperations
      Update or insert an object into storage.
      Specified by:
      upsert in interface SpannerOperations
      Parameters:
      object - the object to update or insert.
      includeProperties - the properties to update. If null is given, then all properties are used. Note that an empty Set means that no properties will be used.
    • delete

      public void delete(Object entity)
      Description copied from interface: SpannerOperations
      Deletes an object from storage.
      Specified by:
      delete in interface SpannerOperations
      Parameters:
      entity - the object to delete from storage.
    • deleteAll

      public void deleteAll(Iterable<?> objects)
      Description copied from interface: SpannerOperations
      Deletes objects from storage in a batch.
      Specified by:
      deleteAll in interface SpannerOperations
      Parameters:
      objects - the objects to delete from storage.
    • delete

      public <T> void delete(Class<T> entityClass, com.google.cloud.spanner.Key key)
      Description copied from interface: SpannerOperations
      Deletes an object based on a key.
      Specified by:
      delete in interface SpannerOperations
      Type Parameters:
      T - the type of the object to delete.
      Parameters:
      entityClass - the type of the object to delete.
      key - the key of the object to delete from storage.
    • delete

      public <T> void delete(Class<T> entityClass, com.google.cloud.spanner.KeySet keys)
      Description copied from interface: SpannerOperations
      Deletes objects given a set of keys.
      Specified by:
      delete in interface SpannerOperations
      Type Parameters:
      T - the type of the object to delete.
      Parameters:
      entityClass - the type of object to delete.
      keys - the keys of the objects to delete.
    • count

      public <T> long count(Class<T> entityClass)
      Description copied from interface: SpannerOperations
      Count how many objects are stored of the given type.
      Specified by:
      count in interface SpannerOperations
      Type Parameters:
      T - the type of the object to count.
      Parameters:
      entityClass - the type of object to count.
      Returns:
      the number of stored objects.
    • performReadWriteTransaction

      public <T> T performReadWriteTransaction(Function<SpannerTemplate,T> operations)
      Description copied from interface: SpannerOperations
      Performs multiple read and write operations in a single transaction.
      Specified by:
      performReadWriteTransaction in interface SpannerOperations
      Type Parameters:
      T - the final return type of the operations.
      Parameters:
      operations - the function representing the operations to perform using a SpannerOperations based on a single transaction.
      Returns:
      the final result of the transaction.
    • performReadOnlyTransaction

      public <T> T performReadOnlyTransaction(Function<SpannerTemplate,T> operations, SpannerReadOptions readOptions)
      Description copied from interface: SpannerOperations
      Performs multiple read-only operations in a single transaction.
      Specified by:
      performReadOnlyTransaction in interface SpannerOperations
      Type Parameters:
      T - the final return type of the operations.
      Parameters:
      operations - the function representing the operations to perform using a SpannerOperations based on a single transaction.
      readOptions - allows the user to specify staleness for the read transaction
      Returns:
      the final result of the transaction.
    • executeQuery

      public com.google.cloud.spanner.ResultSet executeQuery(com.google.cloud.spanner.Statement statement, SpannerQueryOptions options)
    • applyMutations

      protected void applyMutations(Collection<com.google.cloud.spanner.Mutation> mutations)