Class DynamoDBMapper
- java.lang.Object
-
- com.amazonaws.services.dynamodbv2.datamodeling.AbstractDynamoDBMapper
-
- com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper
-
- All Implemented Interfaces:
IDynamoDBMapper
public class DynamoDBMapper extends AbstractDynamoDBMapper
Object mapper for domain-object interaction with DynamoDB.To use, define a domain class that represents an item in a DynamoDB table and annotate it with the annotations found in the com.amazonaws.services.dynamodbv2.datamodeling package. In order to allow the mapper to correctly persist the data, each modeled property in the domain class should be accessible via getter and setter methods, and each property annotation should be either applied to the getter method or the class field. A minimal example using getter annotations:
@DynamoDBTable(tableName = "TestTable") public class TestClass { private Long key; private double rangeKey; private Long version; private Set<Integer> integerSetAttribute; @DynamoDBHashKey public Long getKey() { return key; } public void setKey(Long key) { this.key = key; } @DynamoDBRangeKey public double getRangeKey() { return rangeKey; } public void setRangeKey(double rangeKey) { this.rangeKey = rangeKey; } @DynamoDBAttribute(attributeName = "integerSetAttribute") public Set<Integer> getIntegerAttribute() { return integerSetAttribute; } public void setIntegerAttribute(Set<Integer> integerAttribute) { this.integerSetAttribute = integerAttribute; } @DynamoDBVersionAttribute public Long getVersion() { return version; } public void setVersion(Long version) { this.version = version; } }
Save instances of annotated classes to DynamoDB, retrieve them, and delete them using the
DynamoDBMapper
class, as in the following example.DynamoDBMapper mapper = new DynamoDBMapper(dynamoDBClient); Long hashKey = 105L; double rangeKey = 1.0d; TestClass obj = mapper.load(TestClass.class, hashKey, rangeKey); obj.getIntegerAttribute().add(42); mapper.save(obj); mapper.delete(obj);
If you don't have your DynamoDB table set up yet, you can use
generateCreateTableRequest(Class)
to construct theCreateTableRequest
for the table represented by your annotated class.AmazonDynamoDB dynamoDBClient = new AmazonDynamoDBClient(); DynamoDBMapper mapper = new DynamoDBMapper(dynamoDBClient); CreateTableRequest req = mapper.generateCreateTableRequest(TestClass.class); // Table provision throughput is still required since it cannot be specified in your POJO req.setProvisionedThroughput(new ProvisionedThroughput(5L, 5L)); // Fire off the CreateTableRequest using the low-level client dynamoDBClient.createTable(req);
When using the save, load, and delete methods,
DynamoDBMapper
will throwDynamoDBMappingException
s to indicate that domain classes are incorrectly annotated or otherwise incompatible with this class. Service exceptions will always be propagated asAmazonClientException
, and DynamoDB-specific subclasses such asConditionalCheckFailedException
will be used when possible.This class is thread-safe and can be shared between threads. It's also very lightweight, so it doesn't need to be.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
DynamoDBMapper.FailedBatch
The return type of batchWrite, batchDelete and batchSave.protected class
DynamoDBMapper.SaveObjectHandler
The handler for saving object using DynamoDBMapper.
-
Constructor Summary
Constructors Constructor Description DynamoDBMapper(AmazonDynamoDB dynamoDB)
Constructs a new mapper with the service object given, using the default configuration.DynamoDBMapper(AmazonDynamoDB ddb, AWSCredentialsProvider s3CredentialProvider)
Constructs a new mapper with the service object and S3 client cache given, using the default configuration.DynamoDBMapper(AmazonDynamoDB dynamoDB, DynamoDBMapperConfig config)
Constructs a new mapper with the service object and configuration given.DynamoDBMapper(AmazonDynamoDB dynamoDB, DynamoDBMapperConfig config, AWSCredentialsProvider s3CredentialProvider)
Constructs a new mapper with the service object, configuration, and S3 client cache given.DynamoDBMapper(AmazonDynamoDB dynamoDB, DynamoDBMapperConfig config, AttributeTransformer transformer)
Constructs a new mapper with the given service object, configuration, and transform hook.DynamoDBMapper(AmazonDynamoDB dynamoDB, DynamoDBMapperConfig config, AttributeTransformer transformer, AWSCredentialsProvider s3CredentialsProvider)
Constructor with all parameters.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description List<DynamoDBMapper.FailedBatch>
batchDelete(Iterable<? extends Object> objectsToDelete)
Deletes the objects given using one or more calls to theAmazonDynamoDB.batchWriteItem(BatchWriteItemRequest)
API.List<DynamoDBMapper.FailedBatch>
batchDelete(Object... objectsToDelete)
Deletes the objects given using one or more calls to theAmazonDynamoDB.batchWriteItem(BatchWriteItemRequest)
API.Map<String,List<Object>>
batchLoad(Iterable<? extends Object> itemsToGet)
Retrieves multiple items from multiple tables using their primary keys.Map<String,List<Object>>
batchLoad(Iterable<? extends Object> itemsToGet, DynamoDBMapperConfig config)
Retrieves multiple items from multiple tables using their primary keys.Map<String,List<Object>>
batchLoad(Map<Class<?>,List<KeyPair>> itemsToGet)
Retrieves the attributes for multiple items from multiple tables using their primary keys.Map<String,List<Object>>
batchLoad(Map<Class<?>,List<KeyPair>> itemsToGet, DynamoDBMapperConfig config)
Retrieves multiple items from multiple tables using their primary keys.List<DynamoDBMapper.FailedBatch>
batchSave(Iterable<? extends Object> objectsToSave)
Saves the objects given using one or more calls to theAmazonDynamoDB.batchWriteItem(BatchWriteItemRequest)
API.List<DynamoDBMapper.FailedBatch>
batchSave(Object... objectsToSave)
Saves the objects given using one or more calls to theAmazonDynamoDB.batchWriteItem(BatchWriteItemRequest)
API.List<DynamoDBMapper.FailedBatch>
batchWrite(Iterable<? extends Object> objectsToWrite, Iterable<? extends Object> objectsToDelete)
Saves and deletes the objects given using one or more calls to theAmazonDynamoDB.batchWriteItem(BatchWriteItemRequest)
API.List<DynamoDBMapper.FailedBatch>
batchWrite(Iterable<? extends Object> objectsToWrite, Iterable<? extends Object> objectsToDelete, DynamoDBMapperConfig config)
Saves and deletes the objects given using one or more calls to theAmazonDynamoDB.batchWriteItem(BatchWriteItemRequest)
API.int
count(Class<?> clazz, DynamoDBScanExpression scanExpression)
Evaluates the specified scan expression and returns the count of matching items, without returning any of the actual item data, using the default configuration.int
count(Class<?> clazz, DynamoDBScanExpression scanExpression, DynamoDBMapperConfig config)
Evaluates the specified scan expression and returns the count of matching items, without returning any of the actual item data.<T> int
count(Class<T> clazz, DynamoDBQueryExpression<T> queryExpression)
Evaluates the specified query expression and returns the count of matching items, without returning any of the actual item data, using the default configuration.<T> int
count(Class<T> clazz, DynamoDBQueryExpression<T> queryExpression, DynamoDBMapperConfig config)
Evaluates the specified query expression and returns the count of matching items, without returning any of the actual item data.S3Link
createS3Link(Region s3region, String bucketName, String key)
Creates an S3Link with the specified region, bucket name and key.S3Link
createS3Link(String bucketName, String key)
Creates an S3Link with the specified bucket name and key using the default S3 region.void
delete(Object object)
Deletes the given object from its DynamoDB table using the default configuration.void
delete(Object object, DynamoDBDeleteExpression deleteExpression)
Deletes the given object from its DynamoDB table using the specified deleteExpression and default configuration.void
delete(Object object, DynamoDBMapperConfig config)
Deletes the given object from its DynamoDB table using the specified configuration.<T> void
delete(T object, DynamoDBDeleteExpression deleteExpression, DynamoDBMapperConfig config)
Deletes the given object from its DynamoDB table using the provided deleteExpression and provided configuration.CreateTableRequest
generateCreateTableRequest(Class<?> clazz)
Parse the given POJO class and return the CreateTableRequest for the DynamoDB table it represents.DeleteTableRequest
generateDeleteTableRequest(Class<?> clazz)
Parse the given POJO class and return the DeleteTableRequest for the DynamoDB table it represents.S3ClientCache
getS3ClientCache()
Returns the underlyingS3ClientCache
for accessing S3.protected String
getTableName(Class<?> clazz, DynamoDBMapperConfig config)
Returns the table name for the class given.protected String
getTableName(Class<?> clazz, Object object, DynamoDBMapperConfig config)
Returns the table name for the class or object given.<T> T
load(Class<T> clazz, Object hashKey)
Loads an object with the hash key given, using the default configuration.<T> T
load(Class<T> clazz, Object hashKey, DynamoDBMapperConfig config)
Loads an object with the hash key given and a configuration override.<T> T
load(Class<T> clazz, Object hashKey, Object rangeKey)
Loads an object with a hash and range key, using the default configuration.<T> T
load(Class<T> clazz, Object hashKey, Object rangeKey, DynamoDBMapperConfig config)
Returns an object with the given hash key, or null if no such object exists.<T> T
load(T keyObject)
Returns an object whose keys match those of the prototype key object given, or null if no such item exists.<T> T
load(T keyObject, DynamoDBMapperConfig config)
Returns an object whose keys match those of the prototype key object given, or null if no such item exists.<T> T
marshallIntoObject(Class<T> clazz, Map<String,AttributeValue> itemAttributes)
Creates and fills in the attributes on an instance of the class given with the attributes given.<T> List<T>
marshallIntoObjects(Class<T> clazz, List<Map<String,AttributeValue>> itemAttributes)
Unmarshalls the list of item attributes into objects of type clazz.<T> PaginatedParallelScanList<T>
parallelScan(Class<T> clazz, DynamoDBScanExpression scanExpression, int totalSegments)
Scans through an Amazon DynamoDB table on logically partitioned segments in parallel and returns the matching results in one unmodifiable list of instantiated objects, using the default configuration.<T> PaginatedParallelScanList<T>
parallelScan(Class<T> clazz, DynamoDBScanExpression scanExpression, int totalSegments, DynamoDBMapperConfig config)
Scans through an Amazon DynamoDB table on logically partitioned segments in parallel.<T> PaginatedQueryList<T>
query(Class<T> clazz, DynamoDBQueryExpression<T> queryExpression)
Queries an Amazon DynamoDB table and returns the matching results as an unmodifiable list of instantiated objects, using the default configuration.<T> PaginatedQueryList<T>
query(Class<T> clazz, DynamoDBQueryExpression<T> queryExpression, DynamoDBMapperConfig config)
Queries an Amazon DynamoDB table and returns the matching results as an unmodifiable list of instantiated objects.<T> QueryResultPage<T>
queryPage(Class<T> clazz, DynamoDBQueryExpression<T> queryExpression)
Queries an Amazon DynamoDB table and returns a single page of matching results.<T> QueryResultPage<T>
queryPage(Class<T> clazz, DynamoDBQueryExpression<T> queryExpression, DynamoDBMapperConfig config)
Queries an Amazon DynamoDB table and returns a single page of matching results.<T> void
save(T object)
Saves the object given into DynamoDB, using the default configuration.<T> void
save(T object, DynamoDBMapperConfig config)
Saves the object given into DynamoDB, using the specified configuration.<T> void
save(T object, DynamoDBSaveExpression saveExpression)
Saves the object given into DynamoDB, using the default configuration and the specified saveExpression.<T> void
save(T object, DynamoDBSaveExpression saveExpression, DynamoDBMapperConfig config)
Saves an item in DynamoDB.<T> PaginatedScanList<T>
scan(Class<T> clazz, DynamoDBScanExpression scanExpression)
Scans through an Amazon DynamoDB table and returns the matching results as an unmodifiable list of instantiated objects, using the default configuration.<T> PaginatedScanList<T>
scan(Class<T> clazz, DynamoDBScanExpression scanExpression, DynamoDBMapperConfig config)
Scans through an Amazon DynamoDB table and returns the matching results as an unmodifiable list of instantiated objects.<T> ScanResultPage<T>
scanPage(Class<T> clazz, DynamoDBScanExpression scanExpression)
Scans through an Amazon DynamoDB table and returns a single page of matching results.<T> ScanResultPage<T>
scanPage(Class<T> clazz, DynamoDBScanExpression scanExpression, DynamoDBMapperConfig config)
Scans through an Amazon DynamoDB table and returns a single page of matching results.
-
-
-
Constructor Detail
-
DynamoDBMapper
public DynamoDBMapper(AmazonDynamoDB dynamoDB)
Constructs a new mapper with the service object given, using the default configuration.- Parameters:
dynamoDB
- The service object to use for all service calls.- See Also:
DynamoDBMapperConfig.DEFAULT
-
DynamoDBMapper
public DynamoDBMapper(AmazonDynamoDB dynamoDB, DynamoDBMapperConfig config)
Constructs a new mapper with the service object and configuration given.- Parameters:
dynamoDB
- The service object to use for all service calls.config
- The default configuration to use for all service calls. It can be overridden on a per-operation basis.
-
DynamoDBMapper
public DynamoDBMapper(AmazonDynamoDB ddb, AWSCredentialsProvider s3CredentialProvider)
Constructs a new mapper with the service object and S3 client cache given, using the default configuration.- Parameters:
ddb
- The service object to use for all service calls.s3CredentialProvider
- The credentials provider for accessing S3. Relevant only ifS3Link
is involved.- See Also:
DynamoDBMapperConfig.DEFAULT
-
DynamoDBMapper
public DynamoDBMapper(AmazonDynamoDB dynamoDB, DynamoDBMapperConfig config, AttributeTransformer transformer)
Constructs a new mapper with the given service object, configuration, and transform hook.- Parameters:
dynamoDB
- the service object to use for all service callsconfig
- the default configuration to use for all service calls. It can be overridden on a per-operation basistransformer
- The custom attribute transformer to invoke when serializing or deserializing an object.
-
DynamoDBMapper
public DynamoDBMapper(AmazonDynamoDB dynamoDB, DynamoDBMapperConfig config, AWSCredentialsProvider s3CredentialProvider)
Constructs a new mapper with the service object, configuration, and S3 client cache given.- Parameters:
dynamoDB
- The service object to use for all service calls.config
- The default configuration to use for all service calls. It can be overridden on a per-operation basis.s3CredentialProvider
- The credentials provider for accessing S3. Relevant only ifS3Link
is involved.
-
DynamoDBMapper
public DynamoDBMapper(AmazonDynamoDB dynamoDB, DynamoDBMapperConfig config, AttributeTransformer transformer, AWSCredentialsProvider s3CredentialsProvider)
Constructor with all parameters.- Parameters:
dynamoDB
- The service object to use for all service calls.config
- The default configuration to use for all service calls. It can be overridden on a per-operation basis.transformer
- The custom attribute transformer to invoke when serializing or deserializing an object.s3CredentialProvider
- The credentials provider for accessing S3. Relevant only ifS3Link
is involved.
-
-
Method Detail
-
load
public <T> T load(Class<T> clazz, Object hashKey, DynamoDBMapperConfig config)
Description copied from interface:IDynamoDBMapper
Loads an object with the hash key given and a configuration override. This configuration overrides the default provided at object construction.- Specified by:
load
in interfaceIDynamoDBMapper
- Overrides:
load
in classAbstractDynamoDBMapper
- See Also:
load(Class, Object, Object, DynamoDBMapperConfig)
-
load
public <T> T load(Class<T> clazz, Object hashKey)
Description copied from interface:IDynamoDBMapper
Loads an object with the hash key given, using the default configuration.- Specified by:
load
in interfaceIDynamoDBMapper
- Overrides:
load
in classAbstractDynamoDBMapper
- See Also:
load(Class, Object, Object, DynamoDBMapperConfig)
-
load
public <T> T load(Class<T> clazz, Object hashKey, Object rangeKey)
Description copied from interface:IDynamoDBMapper
Loads an object with a hash and range key, using the default configuration.- Specified by:
load
in interfaceIDynamoDBMapper
- Overrides:
load
in classAbstractDynamoDBMapper
- See Also:
load(Class, Object, Object, DynamoDBMapperConfig)
-
load
public <T> T load(T keyObject)
Description copied from interface:IDynamoDBMapper
Returns an object whose keys match those of the prototype key object given, or null if no such item exists.- Specified by:
load
in interfaceIDynamoDBMapper
- Overrides:
load
in classAbstractDynamoDBMapper
- Parameters:
keyObject
- An object of the class to load with the keys values to match.- See Also:
load(Object, DynamoDBMapperConfig)
-
load
public <T> T load(T keyObject, DynamoDBMapperConfig config)
Description copied from interface:IDynamoDBMapper
Returns an object whose keys match those of the prototype key object given, or null if no such item exists.- Specified by:
load
in interfaceIDynamoDBMapper
- Overrides:
load
in classAbstractDynamoDBMapper
- Parameters:
keyObject
- An object of the class to load with the keys values to match.config
- Configuration for the service call to retrieve the object from DynamoDB. This configuration overrides the default given at construction.
-
load
public <T> T load(Class<T> clazz, Object hashKey, Object rangeKey, DynamoDBMapperConfig config)
Description copied from interface:IDynamoDBMapper
Returns an object with the given hash key, or null if no such object exists.- Specified by:
load
in interfaceIDynamoDBMapper
- Overrides:
load
in classAbstractDynamoDBMapper
- Parameters:
clazz
- The class to load, corresponding to a DynamoDB table.hashKey
- The key of the object.rangeKey
- The range key of the object, or null for tables without a range key.config
- Configuration for the service call to retrieve the object from DynamoDB. This configuration overrides the default given at construction.
-
getTableName
protected final String getTableName(Class<?> clazz, DynamoDBMapperConfig config)
Returns the table name for the class given.
-
getTableName
protected final String getTableName(Class<?> clazz, Object object, DynamoDBMapperConfig config)
Returns the table name for the class or object given.
-
marshallIntoObject
public <T> T marshallIntoObject(Class<T> clazz, Map<String,AttributeValue> itemAttributes)
Description copied from interface:IDynamoDBMapper
Creates and fills in the attributes on an instance of the class given with the attributes given.This is accomplished by looking for getter methods annotated with an appropriate annotation, then looking for matching attribute names in the item attribute map.
This method is no longer called by load/scan/query methods. If you are overriding this method, please switch to using an AttributeTransformer
- Specified by:
marshallIntoObject
in interfaceIDynamoDBMapper
- Overrides:
marshallIntoObject
in classAbstractDynamoDBMapper
- Parameters:
clazz
- The class to instantiate and hydrateitemAttributes
- The set of item attributes, keyed by attribute name.
-
marshallIntoObjects
public <T> List<T> marshallIntoObjects(Class<T> clazz, List<Map<String,AttributeValue>> itemAttributes)
Description copied from interface:IDynamoDBMapper
Unmarshalls the list of item attributes into objects of type clazz.This method is no longer called by load/scan/query methods. If you are overriding this method, please switch to using an AttributeTransformer
- Specified by:
marshallIntoObjects
in interfaceIDynamoDBMapper
- Overrides:
marshallIntoObjects
in classAbstractDynamoDBMapper
- See Also:
marshallIntoObject(Class, Map)
-
save
public <T> void save(T object)
Description copied from interface:IDynamoDBMapper
Saves the object given into DynamoDB, using the default configuration.- Specified by:
save
in interfaceIDynamoDBMapper
- Overrides:
save
in classAbstractDynamoDBMapper
- See Also:
save(Object, DynamoDBSaveExpression, DynamoDBMapperConfig)
-
save
public <T> void save(T object, DynamoDBSaveExpression saveExpression)
Description copied from interface:IDynamoDBMapper
Saves the object given into DynamoDB, using the default configuration and the specified saveExpression.- Specified by:
save
in interfaceIDynamoDBMapper
- Overrides:
save
in classAbstractDynamoDBMapper
- See Also:
save(Object, DynamoDBSaveExpression, DynamoDBMapperConfig)
-
save
public <T> void save(T object, DynamoDBMapperConfig config)
Description copied from interface:IDynamoDBMapper
Saves the object given into DynamoDB, using the specified configuration.- Specified by:
save
in interfaceIDynamoDBMapper
- Overrides:
save
in classAbstractDynamoDBMapper
- See Also:
save(Object, DynamoDBSaveExpression, DynamoDBMapperConfig)
-
save
public <T> void save(T object, DynamoDBSaveExpression saveExpression, DynamoDBMapperConfig config)
Description copied from interface:IDynamoDBMapper
Saves an item in DynamoDB. The service method used is determined by theDynamoDBMapperConfig.getSaveBehavior()
value, to use eitherAmazonDynamoDB.putItem(PutItemRequest)
orAmazonDynamoDB.updateItem(UpdateItemRequest)
:- UPDATE (default) : UPDATE will not affect unmodeled attributes on a save operation and a null value for the modeled attribute will remove it from that item in DynamoDB. Because of the limitation of updateItem request, the implementation of UPDATE will send a putItem request when a key-only object is being saved, and it will send another updateItem request if the given key(s) already exists in the table.
- UPDATE_SKIP_NULL_ATTRIBUTES : Similar to UPDATE except that it ignores any null value attribute(s) and will NOT remove them from that item in DynamoDB. It also guarantees to send only one single updateItem request, no matter the object is key-only or not.
- CLOBBER : CLOBBER will clear and replace all attributes, included unmodeled ones, (delete and recreate) on save. Versioned field constraints will also be disregarded.
- Specified by:
save
in interfaceIDynamoDBMapper
- Overrides:
save
in classAbstractDynamoDBMapper
- Parameters:
object
- The object to save into DynamoDBsaveExpression
- The options to apply to this save requestconfig
- The configuration to use, which overrides the default provided at object construction.- See Also:
DynamoDBMapperConfig.SaveBehavior
-
delete
public void delete(Object object)
Description copied from interface:IDynamoDBMapper
Deletes the given object from its DynamoDB table using the default configuration.- Specified by:
delete
in interfaceIDynamoDBMapper
- Overrides:
delete
in classAbstractDynamoDBMapper
-
delete
public void delete(Object object, DynamoDBDeleteExpression deleteExpression)
Description copied from interface:IDynamoDBMapper
Deletes the given object from its DynamoDB table using the specified deleteExpression and default configuration.- Specified by:
delete
in interfaceIDynamoDBMapper
- Overrides:
delete
in classAbstractDynamoDBMapper
-
delete
public void delete(Object object, DynamoDBMapperConfig config)
Description copied from interface:IDynamoDBMapper
Deletes the given object from its DynamoDB table using the specified configuration.- Specified by:
delete
in interfaceIDynamoDBMapper
- Overrides:
delete
in classAbstractDynamoDBMapper
-
delete
public <T> void delete(T object, DynamoDBDeleteExpression deleteExpression, DynamoDBMapperConfig config)
Description copied from interface:IDynamoDBMapper
Deletes the given object from its DynamoDB table using the provided deleteExpression and provided configuration. Any options specified in the deleteExpression parameter will be overlaid on any constraints due to versioned attributes.- Specified by:
delete
in interfaceIDynamoDBMapper
- Overrides:
delete
in classAbstractDynamoDBMapper
deleteExpression
- The options to apply to this delete requestconfig
- Config override object. IfDynamoDBMapperConfig.SaveBehavior.CLOBBER
is supplied, version fields will not be considered when deleting the object.
-
batchDelete
public List<DynamoDBMapper.FailedBatch> batchDelete(Iterable<? extends Object> objectsToDelete)
Description copied from interface:IDynamoDBMapper
Deletes the objects given using one or more calls to theAmazonDynamoDB.batchWriteItem(BatchWriteItemRequest)
API. No version checks are performed, as required by the API.- Specified by:
batchDelete
in interfaceIDynamoDBMapper
- Overrides:
batchDelete
in classAbstractDynamoDBMapper
- See Also:
batchWrite(Iterable, Iterable)
-
batchDelete
public List<DynamoDBMapper.FailedBatch> batchDelete(Object... objectsToDelete)
Description copied from interface:IDynamoDBMapper
Deletes the objects given using one or more calls to theAmazonDynamoDB.batchWriteItem(BatchWriteItemRequest)
API. No version checks are performed, as required by the API.- Specified by:
batchDelete
in interfaceIDynamoDBMapper
- Overrides:
batchDelete
in classAbstractDynamoDBMapper
- See Also:
batchWrite(Iterable, Iterable)
-
batchSave
public List<DynamoDBMapper.FailedBatch> batchSave(Iterable<? extends Object> objectsToSave)
Description copied from interface:IDynamoDBMapper
Saves the objects given using one or more calls to theAmazonDynamoDB.batchWriteItem(BatchWriteItemRequest)
API. No version checks are performed, as required by the API. This method ignores any SaveBehavior set on the mapper, and always behaves as if SaveBehavior.CLOBBER was specified, as the AmazonDynamoDB.batchWriteItem() request does not support updating existing items.This method fails to save the batch if the size of an individual object in the batch exceeds 400 KB. For more information on batch restrictions see, http://docs.aws.amazon .com/amazondynamodb/latest/APIReference/API_BatchWriteItem.html
- Specified by:
batchSave
in interfaceIDynamoDBMapper
- Overrides:
batchSave
in classAbstractDynamoDBMapper
- See Also:
batchWrite(Iterable, Iterable)
-
batchSave
public List<DynamoDBMapper.FailedBatch> batchSave(Object... objectsToSave)
Description copied from interface:IDynamoDBMapper
Saves the objects given using one or more calls to theAmazonDynamoDB.batchWriteItem(BatchWriteItemRequest)
API. No version checks are performed, as required by the API. This method ignores any SaveBehavior set on the mapper, and always behaves as if SaveBehavior.CLOBBER was specified, as the AmazonDynamoDB.batchWriteItem() request does not support updating existing items. *This method fails to save the batch if the size of an individual object in the batch exceeds 400 KB. For more information on batch restrictions see, http://docs.aws.amazon .com/amazondynamodb/latest/APIReference/API_BatchWriteItem.html
- Specified by:
batchSave
in interfaceIDynamoDBMapper
- Overrides:
batchSave
in classAbstractDynamoDBMapper
- See Also:
batchWrite(Iterable, Iterable)
-
batchWrite
public List<DynamoDBMapper.FailedBatch> batchWrite(Iterable<? extends Object> objectsToWrite, Iterable<? extends Object> objectsToDelete)
Description copied from interface:IDynamoDBMapper
Saves and deletes the objects given using one or more calls to theAmazonDynamoDB.batchWriteItem(BatchWriteItemRequest)
API. No version checks are performed, as required by the API. This method ignores any SaveBehavior set on the mapper, and always behaves as if SaveBehavior.CLOBBER was specified, as the AmazonDynamoDB.batchWriteItem() request does not support updating existing items.This method fails to save the batch if the size of an individual object in the batch exceeds 400 KB. For more information on batch restrictions see, http://docs.aws.amazon .com/amazondynamodb/latest/APIReference/API_BatchWriteItem.html
If one of the write requests is for a table that is not present, this method does not throw a ResourceNotFoundException but returns a FailedBatch which includes this exception and the unprocessed items.
- Specified by:
batchWrite
in interfaceIDynamoDBMapper
- Overrides:
batchWrite
in classAbstractDynamoDBMapper
- See Also:
batchWrite(Iterable, Iterable)
-
batchWrite
public List<DynamoDBMapper.FailedBatch> batchWrite(Iterable<? extends Object> objectsToWrite, Iterable<? extends Object> objectsToDelete, DynamoDBMapperConfig config)
Description copied from interface:IDynamoDBMapper
Saves and deletes the objects given using one or more calls to theAmazonDynamoDB.batchWriteItem(BatchWriteItemRequest)
API. Use mapper config to control the retry strategy when UnprocessedItems are returned by the BatchWriteItem APIThis method fails to save the batch if the size of an individual object in the batch exceeds 400 KB. For more information on batch restrictions see, http://docs.aws.amazon .com/amazondynamodb/latest/APIReference/API_BatchWriteItem.html
If one of the write requests is for a table that is not present, this method does not throw a ResourceNotFoundException but returns a FailedBatch which includes this exception and the unprocessed items.
- Specified by:
batchWrite
in interfaceIDynamoDBMapper
- Overrides:
batchWrite
in classAbstractDynamoDBMapper
- Parameters:
objectsToWrite
- A list of objects to save to DynamoDB. No version checks are performed, as required by theAmazonDynamoDB.batchWriteItem(BatchWriteItemRequest)
API.objectsToDelete
- A list of objects to delete from DynamoDB. No version checks are performed, as required by theAmazonDynamoDB.batchWriteItem(BatchWriteItemRequest)
API.config
- OnlyDynamoDBMapperConfig.getTableNameOverride()
andDynamoDBMapperConfig.getBatchWriteRetryStrategy()
are considered. If TableNameOverride is specified, all objects in the two parameter lists will be considered to belong to the given table override. In particular, this method always acts as if SaveBehavior.CLOBBER was specified regardless of the value of the config parameter.- Returns:
- A list of failed batches which includes the unprocessed items and the exceptions causing the failure.
- See Also:
DynamoDBMapperConfig.getTableNameOverride()
,DynamoDBMapperConfig.getBatchWriteRetryStrategy()
-
batchLoad
public Map<String,List<Object>> batchLoad(Iterable<? extends Object> itemsToGet)
Description copied from interface:IDynamoDBMapper
Retrieves multiple items from multiple tables using their primary keys.- Specified by:
batchLoad
in interfaceIDynamoDBMapper
- Overrides:
batchLoad
in classAbstractDynamoDBMapper
- Returns:
- A map of the loaded objects. Each key in the map is the name of a DynamoDB table. Each value in the map is a list of objects that have been loaded from that table. All objects for each table can be cast to the associated user defined type that is annotated as mapping that table.
- See Also:
DynamoDBMapper#batchLoad(List, DynamoDBMapperConfig)
-
batchLoad
public Map<String,List<Object>> batchLoad(Iterable<? extends Object> itemsToGet, DynamoDBMapperConfig config)
Description copied from interface:IDynamoDBMapper
Retrieves multiple items from multiple tables using their primary keys.- Specified by:
batchLoad
in interfaceIDynamoDBMapper
- Overrides:
batchLoad
in classAbstractDynamoDBMapper
- Parameters:
itemsToGet
- Key objects, corresponding to the class to fetch, with their primary key values set.config
- OnlyDynamoDBMapperConfig.getTableNameOverride()
andDynamoDBMapperConfig.getConsistentReads()
are considered.- Returns:
- A map of the loaded objects. Each key in the map is the name of a DynamoDB table. Each value in the map is a list of objects that have been loaded from that table. All objects for each table can be cast to the associated user defined type that is annotated as mapping that table.
-
batchLoad
public Map<String,List<Object>> batchLoad(Map<Class<?>,List<KeyPair>> itemsToGet)
Description copied from interface:IDynamoDBMapper
Retrieves the attributes for multiple items from multiple tables using their primary keys.AmazonDynamoDB.batchGetItem(BatchGetItemRequest)
API.- Specified by:
batchLoad
in interfaceIDynamoDBMapper
- Overrides:
batchLoad
in classAbstractDynamoDBMapper
- Returns:
- A map of the loaded objects. Each key in the map is the name of a DynamoDB table. Each value in the map is a list of objects that have been loaded from that table. All objects for each table can be cast to the associated user defined type that is annotated as mapping that table.
- See Also:
#batchLoad(List, DynamoDBMapperConfig)
,IDynamoDBMapper.batchLoad(Map, DynamoDBMapperConfig)
-
batchLoad
public Map<String,List<Object>> batchLoad(Map<Class<?>,List<KeyPair>> itemsToGet, DynamoDBMapperConfig config)
Description copied from interface:IDynamoDBMapper
Retrieves multiple items from multiple tables using their primary keys. Valid only for tables with a single hash key, or a single hash and range key. For other schemas, useDynamoDBMapper#batchLoad(List, DynamoDBMapperConfig)
- Specified by:
batchLoad
in interfaceIDynamoDBMapper
- Overrides:
batchLoad
in classAbstractDynamoDBMapper
- Parameters:
itemsToGet
- Map from class to load to list of primary key attributes.config
- OnlyDynamoDBMapperConfig.getTableNameOverride()
andDynamoDBMapperConfig.getConsistentReads()
are considered.- Returns:
- A map of the loaded objects. Each key in the map is the name of a DynamoDB table. Each value in the map is a list of objects that have been loaded from that table. All objects for each table can be cast to the associated user defined type that is annotated as mapping that table.
-
scan
public <T> PaginatedScanList<T> scan(Class<T> clazz, DynamoDBScanExpression scanExpression)
Description copied from interface:IDynamoDBMapper
Scans through an Amazon DynamoDB table and returns the matching results as an unmodifiable list of instantiated objects, using the default configuration.- Specified by:
scan
in interfaceIDynamoDBMapper
- Overrides:
scan
in classAbstractDynamoDBMapper
- See Also:
scan(Class, DynamoDBScanExpression, DynamoDBMapperConfig)
-
scan
public <T> PaginatedScanList<T> scan(Class<T> clazz, DynamoDBScanExpression scanExpression, DynamoDBMapperConfig config)
Description copied from interface:IDynamoDBMapper
Scans through an Amazon DynamoDB table and returns the matching results as an unmodifiable list of instantiated objects. The table to scan is determined by looking at the annotations on the specified class, which declares where to store the object data in Amazon DynamoDB, and the scan expression parameter allows the caller to filter results and control how the scan is executed.Callers should be aware that the returned list is unmodifiable, and any attempts to modify the list will result in an UnsupportedOperationException.
You can specify the pagination loading strategy for this scan operation. By default, the list returned is lazily loaded when possible.
- Specified by:
scan
in interfaceIDynamoDBMapper
- Overrides:
scan
in classAbstractDynamoDBMapper
- Type Parameters:
T
- The type of the objects being returned.- Parameters:
clazz
- The class annotated with DynamoDB annotations describing how to store the object data in Amazon DynamoDB.scanExpression
- Details on how to run the scan, including any filters to apply to limit results.config
- The configuration to use for this scan, which overrides the default provided at object construction.- Returns:
- An unmodifiable list of the objects constructed from the results of the scan operation.
- See Also:
PaginatedScanList
,DynamoDBMapperConfig.PaginationLoadingStrategy
-
parallelScan
public <T> PaginatedParallelScanList<T> parallelScan(Class<T> clazz, DynamoDBScanExpression scanExpression, int totalSegments)
Description copied from interface:IDynamoDBMapper
Scans through an Amazon DynamoDB table on logically partitioned segments in parallel and returns the matching results in one unmodifiable list of instantiated objects, using the default configuration.- Specified by:
parallelScan
in interfaceIDynamoDBMapper
- Overrides:
parallelScan
in classAbstractDynamoDBMapper
- See Also:
parallelScan(Class, DynamoDBScanExpression,int, DynamoDBMapperConfig)
-
parallelScan
public <T> PaginatedParallelScanList<T> parallelScan(Class<T> clazz, DynamoDBScanExpression scanExpression, int totalSegments, DynamoDBMapperConfig config)
Description copied from interface:IDynamoDBMapper
Scans through an Amazon DynamoDB table on logically partitioned segments in parallel. This method will create a thread pool of the specified size, and each thread will issue scan requests for its assigned segment, following the returned continuation token, until the end of its segment. Callers should be responsible for setting the appropriate number of total segments. More scan segments would result in better performance but more consumed capacity of the table. The results are returned in one unmodifiable list of instantiated objects. The table to scan is determined by looking at the annotations on the specified class, which declares where to store the object data in Amazon DynamoDB, and the scan expression parameter allows the caller to filter results and control how the scan is executed.Callers should be aware that the returned list is unmodifiable, and any attempts to modify the list will result in an UnsupportedOperationException.
You can specify the pagination loading strategy for this parallel scan operation. By default, the list returned is lazily loaded when possible.
- Specified by:
parallelScan
in interfaceIDynamoDBMapper
- Overrides:
parallelScan
in classAbstractDynamoDBMapper
- Type Parameters:
T
- The type of the objects being returned.- Parameters:
clazz
- The class annotated with DynamoDB annotations describing how to store the object data in Amazon DynamoDB.scanExpression
- Details on how to run the scan, including any filters to apply to limit results.totalSegments
- Number of total parallel scan segments. Range: 1 - 4096config
- The configuration to use for this scan, which overrides the default provided at object construction.- Returns:
- An unmodifiable list of the objects constructed from the results of the scan operation.
- See Also:
PaginatedParallelScanList
,DynamoDBMapperConfig.PaginationLoadingStrategy
-
scanPage
public <T> ScanResultPage<T> scanPage(Class<T> clazz, DynamoDBScanExpression scanExpression, DynamoDBMapperConfig config)
Description copied from interface:IDynamoDBMapper
Scans through an Amazon DynamoDB table and returns a single page of matching results. The table to scan is determined by looking at the annotations on the specified class, which declares where to store the object data in AWS DynamoDB, and the scan expression parameter allows the caller to filter results and control how the scan is executed.- Specified by:
scanPage
in interfaceIDynamoDBMapper
- Overrides:
scanPage
in classAbstractDynamoDBMapper
- Type Parameters:
T
- The type of the objects being returned.- Parameters:
clazz
- The class annotated with DynamoDB annotations describing how to store the object data in Amazon DynamoDB.scanExpression
- Details on how to run the scan, including any filters to apply to limit results.config
- The configuration to use for this scan, which overrides the default provided at object construction.
-
scanPage
public <T> ScanResultPage<T> scanPage(Class<T> clazz, DynamoDBScanExpression scanExpression)
Description copied from interface:IDynamoDBMapper
Scans through an Amazon DynamoDB table and returns a single page of matching results.- Specified by:
scanPage
in interfaceIDynamoDBMapper
- Overrides:
scanPage
in classAbstractDynamoDBMapper
- See Also:
scanPage(Class, DynamoDBScanExpression, DynamoDBMapperConfig)
-
query
public <T> PaginatedQueryList<T> query(Class<T> clazz, DynamoDBQueryExpression<T> queryExpression)
Description copied from interface:IDynamoDBMapper
Queries an Amazon DynamoDB table and returns the matching results as an unmodifiable list of instantiated objects, using the default configuration.- Specified by:
query
in interfaceIDynamoDBMapper
- Overrides:
query
in classAbstractDynamoDBMapper
- See Also:
query(Class, DynamoDBQueryExpression, DynamoDBMapperConfig)
-
query
public <T> PaginatedQueryList<T> query(Class<T> clazz, DynamoDBQueryExpression<T> queryExpression, DynamoDBMapperConfig config)
Description copied from interface:IDynamoDBMapper
Queries an Amazon DynamoDB table and returns the matching results as an unmodifiable list of instantiated objects. The table to query is determined by looking at the annotations on the specified class, which declares where to store the object data in Amazon DynamoDB, and the query expression parameter allows the caller to filter results and control how the query is executed.When the query is on any local/global secondary index, callers should be aware that the returned object(s) will only contain item attributes that are projected into the index. All the other unprojected attributes will be saved as type default values.
Callers should also be aware that the returned list is unmodifiable, and any attempts to modify the list will result in an UnsupportedOperationException.
You can specify the pagination loading strategy for this query operation. By default, the list returned is lazily loaded when possible.
- Specified by:
query
in interfaceIDynamoDBMapper
- Overrides:
query
in classAbstractDynamoDBMapper
- Type Parameters:
T
- The type of the objects being returned.- Parameters:
clazz
- The class annotated with DynamoDB annotations describing how to store the object data in Amazon DynamoDB.queryExpression
- Details on how to run the query, including any conditions on the key valuesconfig
- The configuration to use for this query, which overrides the default provided at object construction.- Returns:
- An unmodifiable list of the objects constructed from the results of the query operation.
- See Also:
PaginatedQueryList
,DynamoDBMapperConfig.PaginationLoadingStrategy
-
queryPage
public <T> QueryResultPage<T> queryPage(Class<T> clazz, DynamoDBQueryExpression<T> queryExpression)
Description copied from interface:IDynamoDBMapper
Queries an Amazon DynamoDB table and returns a single page of matching results. The table to query is determined by looking at the annotations on the specified class, which declares where to store the object data in Amazon DynamoDB, and the query expression parameter allows the caller to filter results and control how the query is executed.- Specified by:
queryPage
in interfaceIDynamoDBMapper
- Overrides:
queryPage
in classAbstractDynamoDBMapper
- See Also:
queryPage(Class, DynamoDBQueryExpression, DynamoDBMapperConfig)
-
queryPage
public <T> QueryResultPage<T> queryPage(Class<T> clazz, DynamoDBQueryExpression<T> queryExpression, DynamoDBMapperConfig config)
Description copied from interface:IDynamoDBMapper
Queries an Amazon DynamoDB table and returns a single page of matching results. The table to query is determined by looking at the annotations on the specified class, which declares where to store the object data in Amazon DynamoDB, and the query expression parameter allows the caller to filter results and control how the query is executed.- Specified by:
queryPage
in interfaceIDynamoDBMapper
- Overrides:
queryPage
in classAbstractDynamoDBMapper
- Type Parameters:
T
- The type of the objects being returned.- Parameters:
clazz
- The class annotated with DynamoDB annotations describing how to store the object data in AWS DynamoDB.queryExpression
- Details on how to run the query, including any conditions on the key valuesconfig
- The configuration to use for this query, which overrides the default provided at object construction.
-
count
public int count(Class<?> clazz, DynamoDBScanExpression scanExpression)
Description copied from interface:IDynamoDBMapper
Evaluates the specified scan expression and returns the count of matching items, without returning any of the actual item data, using the default configuration.- Specified by:
count
in interfaceIDynamoDBMapper
- Overrides:
count
in classAbstractDynamoDBMapper
- See Also:
count(Class, DynamoDBScanExpression, DynamoDBMapperConfig)
-
count
public int count(Class<?> clazz, DynamoDBScanExpression scanExpression, DynamoDBMapperConfig config)
Description copied from interface:IDynamoDBMapper
Evaluates the specified scan expression and returns the count of matching items, without returning any of the actual item data.This operation will scan your entire table, and can therefore be very expensive. Use with caution.
- Specified by:
count
in interfaceIDynamoDBMapper
- Overrides:
count
in classAbstractDynamoDBMapper
- Parameters:
clazz
- The class mapped to a DynamoDB table.scanExpression
- The parameters for running the scan.config
- The configuration to use for this scan, which overrides the default provided at object construction.- Returns:
- The count of matching items, without returning any of the actual item data.
-
count
public <T> int count(Class<T> clazz, DynamoDBQueryExpression<T> queryExpression)
Description copied from interface:IDynamoDBMapper
Evaluates the specified query expression and returns the count of matching items, without returning any of the actual item data, using the default configuration.- Specified by:
count
in interfaceIDynamoDBMapper
- Overrides:
count
in classAbstractDynamoDBMapper
- See Also:
count(Class, DynamoDBQueryExpression, DynamoDBMapperConfig)
-
count
public <T> int count(Class<T> clazz, DynamoDBQueryExpression<T> queryExpression, DynamoDBMapperConfig config)
Description copied from interface:IDynamoDBMapper
Evaluates the specified query expression and returns the count of matching items, without returning any of the actual item data.- Specified by:
count
in interfaceIDynamoDBMapper
- Overrides:
count
in classAbstractDynamoDBMapper
- Parameters:
clazz
- The class mapped to a DynamoDB table.queryExpression
- The parameters for running the scan.config
- The mapper configuration to use for the query, which overrides the default provided at object construction.- Returns:
- The count of matching items, without returning any of the actual item data.
-
getS3ClientCache
public S3ClientCache getS3ClientCache()
Description copied from interface:IDynamoDBMapper
Returns the underlyingS3ClientCache
for accessing S3.- Specified by:
getS3ClientCache
in interfaceIDynamoDBMapper
- Overrides:
getS3ClientCache
in classAbstractDynamoDBMapper
-
createS3Link
public S3Link createS3Link(String bucketName, String key)
Description copied from interface:IDynamoDBMapper
Creates an S3Link with the specified bucket name and key using the default S3 region. This method requires the mapper to have been initialized with the necessary credentials for accessing S3.- Specified by:
createS3Link
in interfaceIDynamoDBMapper
- Overrides:
createS3Link
in classAbstractDynamoDBMapper
-
createS3Link
public S3Link createS3Link(Region s3region, String bucketName, String key)
Description copied from interface:IDynamoDBMapper
Creates an S3Link with the specified region, bucket name and key. This method requires the mapper to have been initialized with the necessary credentials for accessing S3.- Specified by:
createS3Link
in interfaceIDynamoDBMapper
- Overrides:
createS3Link
in classAbstractDynamoDBMapper
-
generateCreateTableRequest
public CreateTableRequest generateCreateTableRequest(Class<?> clazz)
Description copied from interface:IDynamoDBMapper
Parse the given POJO class and return the CreateTableRequest for the DynamoDB table it represents. Note that the returned request does not include the required ProvisionedThroughput parameters for the primary table and the GSIs, and that all secondary indexes are initialized with the default projection type - KEY_ONLY.- Specified by:
generateCreateTableRequest
in interfaceIDynamoDBMapper
- Overrides:
generateCreateTableRequest
in classAbstractDynamoDBMapper
-
generateDeleteTableRequest
public DeleteTableRequest generateDeleteTableRequest(Class<?> clazz)
Description copied from interface:IDynamoDBMapper
Parse the given POJO class and return the DeleteTableRequest for the DynamoDB table it represents.- Specified by:
generateDeleteTableRequest
in interfaceIDynamoDBMapper
- Overrides:
generateDeleteTableRequest
in classAbstractDynamoDBMapper
-
-