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 Summary
ConstructorDescriptionSpannerTemplate
(Supplier<com.google.cloud.spanner.DatabaseClient> databaseClientProvider, SpannerMappingContext mappingContext, SpannerEntityProcessor spannerEntityProcessor, SpannerMutationFactory spannerMutationFactory, SpannerSchemaUtils spannerSchemaUtils) -
Method Summary
Modifier and TypeMethodDescriptionprotected void
applyMutations
(Collection<com.google.cloud.spanner.Mutation> mutations) <T> long
Count how many objects are stored of the given type.<T> void
Deletes an object based on a key.<T> void
Deletes objects given a set of keys.void
Deletes an object from storage.void
Deletes objects from storage in a batch.long
executeDmlStatement
(com.google.cloud.spanner.Statement statement) Execute a DML statement on Cloud Spanner.long
executePartitionedDmlStatement
(com.google.cloud.spanner.Statement statement) Execute a DML statement in partitioned mode.long
executePartitionedDmlStatement
(com.google.cloud.spanner.Statement statement, com.google.cloud.spanner.Options.UpdateOption... options) Execute a DML statement in partitioned mode.com.google.cloud.spanner.ResultSet
executeQuery
(com.google.cloud.spanner.Statement statement, SpannerQueryOptions options) <T> boolean
existsById
(Class<T> entityClass, com.google.cloud.spanner.Key key) Returns whether an entity with the given id exists.protected com.google.cloud.spanner.ReadContext
protected com.google.cloud.spanner.ReadContext
getReadContext
(com.google.cloud.spanner.TimestampBound timestampBound) void
Insert an object into storage.void
Insert objects into storage in batch.<T> T
performReadOnlyTransaction
(Function<SpannerTemplate, T> operations, SpannerReadOptions readOptions) Performs multiple read-only operations in a single transaction.<T> T
performReadWriteTransaction
(Function<SpannerTemplate, T> operations) Performs multiple read and write operations in a single transaction.<T> List<T>
query
(Class<T> entityClass, com.google.cloud.spanner.Statement statement, SpannerQueryOptions options) Finds objects by using an SQL statement.<A> List<A>
query
(Function<com.google.cloud.spanner.Struct, A> rowFunc, com.google.cloud.spanner.Statement statement, SpannerQueryOptions options) Executes a given query string with tags and parameters and applies a given function to each row of the result.<T> List<T>
queryAll
(Class<T> entityClass, SpannerPageableQueryOptions options) Finds all objects of the given type.<T> T
Finds a single stored object using a key.<T> T
read
(Class<T> entityClass, com.google.cloud.spanner.Key key, SpannerReadOptions options) Finds a single stored object using a key.<T> List<T>
Finds objects stored from their keys.<T> List<T>
read
(Class<T> entityClass, com.google.cloud.spanner.KeySet keys, SpannerReadOptions options) Finds objects stored from their keys.<T> List<T>
Finds all objects of the given type.<T> List<T>
readAll
(Class<T> entityClass, SpannerReadOptions options) Finds all objects of the given type.void
setApplicationEventPublisher
(org.springframework.context.ApplicationEventPublisher applicationEventPublisher) void
Update an object already in storage.void
Update an object in storage.void
Update an object in storage.void
Update objects in batch.void
Update or insert an object into storage.void
Update or insert an object into storage.void
Update or insert an object into storage.void
Update or insert objects into storage in batch.
-
Constructor Details
-
SpannerTemplate
public SpannerTemplate(Supplier<com.google.cloud.spanner.DatabaseClient> databaseClientProvider, SpannerMappingContext mappingContext, SpannerEntityProcessor spannerEntityProcessor, SpannerMutationFactory spannerMutationFactory, SpannerSchemaUtils spannerSchemaUtils)
-
-
Method Details
-
setApplicationEventPublisher
public void setApplicationEventPublisher(org.springframework.context.ApplicationEventPublisher applicationEventPublisher) - Specified by:
setApplicationEventPublisher
in interfaceorg.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
-
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. SeeSpannerOperations.executePartitionedDmlStatement(Statement)
for executing partitioned DML without a transaction.- Specified by:
executeDmlStatement
in interfaceSpannerOperations
- 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 interfaceSpannerOperations
- 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 interfaceSpannerOperations
- Parameters:
statement
- the DML statement to execute.options
- marks options applicable to update operation.- Returns:
- the lower-bound of number of rows affected.
-
read
Description copied from interface:SpannerOperations
Finds a single stored object using a key.- Specified by:
read
in interfaceSpannerOperations
- 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
Description copied from interface:SpannerOperations
Returns whether an entity with the given id exists.- Specified by:
existsById
in interfaceSpannerOperations
- Type Parameters:
T
- the type of the object to check.- Parameters:
entityClass
- the type of the entitykey
- 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 interfaceSpannerOperations
- 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
Description copied from interface:SpannerOperations
Finds objects stored from their keys.- Specified by:
read
in interfaceSpannerOperations
- 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 aWhere
class annotation or any of the properties is eagerly interleaved, the SQL query will be performed instead of theReadContext.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 thesql where
condition.- Specified by:
read
in interfaceSpannerOperations
- 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 interfaceSpannerOperations
- 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 interfaceSpannerOperations
- 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
Description copied from interface:SpannerOperations
Finds all objects of the given type.- Specified by:
readAll
in interfaceSpannerOperations
- 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
Description copied from interface:SpannerOperations
Finds all objects of the given type.- Specified by:
readAll
in interfaceSpannerOperations
- 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
Description copied from interface:SpannerOperations
Finds all objects of the given type.- Specified by:
queryAll
in interfaceSpannerOperations
- 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
Description copied from interface:SpannerOperations
Insert an object into storage.- Specified by:
insert
in interfaceSpannerOperations
- Parameters:
object
- the object to insert.
-
insertAll
Description copied from interface:SpannerOperations
Insert objects into storage in batch.- Specified by:
insertAll
in interfaceSpannerOperations
- Parameters:
objects
- the objects to insert.
-
update
Description copied from interface:SpannerOperations
Update an object already in storage.- Specified by:
update
in interfaceSpannerOperations
- Parameters:
object
- the object to update.
-
updateAll
Description copied from interface:SpannerOperations
Update objects in batch.- Specified by:
updateAll
in interfaceSpannerOperations
- Parameters:
objects
- the objects to update.
-
update
Description copied from interface:SpannerOperations
Update an object in storage.- Specified by:
update
in interfaceSpannerOperations
- Parameters:
object
- the object to update.includeProperties
- the properties to upsert. if none are given then all properties are used
-
update
Description copied from interface:SpannerOperations
Update an object in storage.- Specified by:
update
in interfaceSpannerOperations
- Parameters:
object
- the object to update.includeProperties
- the properties to update. If null is given, then all properties are used. Note that an emptySet
means that no properties will be used.
-
upsert
Description copied from interface:SpannerOperations
Update or insert an object into storage.- Specified by:
upsert
in interfaceSpannerOperations
- Parameters:
object
- the object to update or insert.
-
upsertAll
Description copied from interface:SpannerOperations
Update or insert objects into storage in batch.- Specified by:
upsertAll
in interfaceSpannerOperations
- Parameters:
objects
- the objects to update or insert.
-
upsert
Description copied from interface:SpannerOperations
Update or insert an object into storage.- Specified by:
upsert
in interfaceSpannerOperations
- Parameters:
object
- the object to update or insert.includeProperties
- the properties to upsert. if none are given then all properties are upserted.
-
upsert
Description copied from interface:SpannerOperations
Update or insert an object into storage.- Specified by:
upsert
in interfaceSpannerOperations
- 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 emptySet
means that no properties will be used.
-
delete
Description copied from interface:SpannerOperations
Deletes an object from storage.- Specified by:
delete
in interfaceSpannerOperations
- Parameters:
entity
- the object to delete from storage.
-
deleteAll
Description copied from interface:SpannerOperations
Deletes objects from storage in a batch.- Specified by:
deleteAll
in interfaceSpannerOperations
- Parameters:
objects
- the objects to delete from storage.
-
delete
Description copied from interface:SpannerOperations
Deletes an object based on a key.- Specified by:
delete
in interfaceSpannerOperations
- 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
Description copied from interface:SpannerOperations
Deletes objects given a set of keys.- Specified by:
delete
in interfaceSpannerOperations
- 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
Description copied from interface:SpannerOperations
Count how many objects are stored of the given type.- Specified by:
count
in interfaceSpannerOperations
- 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
Description copied from interface:SpannerOperations
Performs multiple read and write operations in a single transaction.- Specified by:
performReadWriteTransaction
in interfaceSpannerOperations
- 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 interfaceSpannerOperations
- 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
-