Interface IDynamoDBMapper

    • Method Detail

      • load

        <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.
        Parameters:
        keyObject - An object of the class to load with the keys values to match.
        See Also:
        DynamoDBMapper.load(Object, DynamoDBMapperConfig)
      • load

        <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.
        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

        <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.
        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.
      • marshallIntoObject

        <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.

        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

        Parameters:
        clazz - The class to instantiate and hydrate
        itemAttributes - The set of item attributes, keyed by attribute name.
      • save

        <T> void save​(T object,
                      DynamoDBSaveExpression saveExpression,
                      DynamoDBMapperConfig config)
        Saves an item in DynamoDB. The service method used is determined by the DynamoDBMapperConfig.getSaveBehavior() value, to use either AmazonDynamoDB.putItem(PutItemRequest) or AmazonDynamoDB.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.
        Any options specified in the saveExpression parameter will be overlaid on any constraints due to versioned attributes.
        Parameters:
        object - The object to save into DynamoDB
        saveExpression - The options to apply to this save request
        config - The configuration to use, which overrides the default provided at object construction.
        See Also:
        DynamoDBMapperConfig.SaveBehavior
      • delete

        void delete​(Object object)
        Deletes the given object from its DynamoDB table using the default configuration.
      • delete

        void delete​(Object object,
                    DynamoDBDeleteExpression deleteExpression)
        Deletes the given object from its DynamoDB table using the specified deleteExpression and default configuration.
      • delete

        void delete​(Object object,
                    DynamoDBMapperConfig config)
        Deletes the given object from its DynamoDB table using the specified configuration.
      • delete

        <T> void delete​(T object,
                        DynamoDBDeleteExpression deleteExpression,
                        DynamoDBMapperConfig config)
        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.
        Parameters:
        deleteExpression - The options to apply to this delete request
        config - Config override object. If DynamoDBMapperConfig.SaveBehavior.CLOBBER is supplied, version fields will not be considered when deleting the object.
      • batchSave

        List<DynamoDBMapper.FailedBatch> batchSave​(Iterable<? extends Object> objectsToSave)
        Saves the objects given using one or more calls to the AmazonDynamoDB.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

        See Also:
        DynamoDBMapper.batchWrite(Iterable, Iterable)
      • batchSave

        List<DynamoDBMapper.FailedBatch> batchSave​(Object... objectsToSave)
        Saves the objects given using one or more calls to the AmazonDynamoDB.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

        See Also:
        DynamoDBMapper.batchWrite(Iterable, Iterable)
      • batchWrite

        List<DynamoDBMapper.FailedBatch> batchWrite​(Iterable<? extends Object> objectsToWrite,
                                                    Iterable<? extends Object> objectsToDelete)
        Saves and deletes the objects given using one or more calls to the AmazonDynamoDB.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.

        See Also:
        DynamoDBMapper.batchWrite(Iterable, Iterable)
      • batchLoad

        Map<String,​List<Object>> batchLoad​(Iterable<? extends Object> itemsToGet)
        Retrieves multiple items from multiple tables using their primary keys.
        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

        Map<String,​List<Object>> batchLoad​(Iterable<? extends Object> itemsToGet,
                                                 DynamoDBMapperConfig config)
        Retrieves multiple items from multiple tables using their primary keys.
        Parameters:
        itemsToGet - Key objects, corresponding to the class to fetch, with their primary key values set.
        config - Only DynamoDBMapperConfig.getTableNameOverride() and DynamoDBMapperConfig.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

        Map<String,​List<Object>> batchLoad​(Map<Class<?>,​List<KeyPair>> itemsToGet)
        Retrieves the attributes for multiple items from multiple tables using their primary keys. AmazonDynamoDB.batchGetItem(BatchGetItemRequest) API.
        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), batchLoad(Map, DynamoDBMapperConfig)
      • batchLoad

        Map<String,​List<Object>> batchLoad​(Map<Class<?>,​List<KeyPair>> itemsToGet,
                                                 DynamoDBMapperConfig config)
        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, use DynamoDBMapper#batchLoad(List, DynamoDBMapperConfig)
        Parameters:
        itemsToGet - Map from class to load to list of primary key attributes.
        config - Only DynamoDBMapperConfig.getTableNameOverride() and DynamoDBMapperConfig.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

        <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. 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.

        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

        <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. 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.

        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 - 4096
        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:
        PaginatedParallelScanList, DynamoDBMapperConfig.PaginationLoadingStrategy
      • scanPage

        <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. 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.
        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.
      • query

        <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. 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.

        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 values
        config - 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

        <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. 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.
        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 values
        config - The configuration to use for this query, which overrides the default provided at object construction.
      • count

        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.

        This operation will scan your entire table, and can therefore be very expensive. Use with caution.

        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

        <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.
        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.
      • createS3Link

        S3Link createS3Link​(String bucketName,
                            String key)
        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.
        Throws:
        IllegalStateException - if the mapper has not been constructed with the necessary S3 AWS credentials.
      • createS3Link

        S3Link createS3Link​(Region s3region,
                            String bucketName,
                            String key)
        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.
        Throws:
        IllegalStateException - if the mapper has not been constructed with the necessary S3 AWS credentials.
      • generateCreateTableRequest

        CreateTableRequest generateCreateTableRequest​(Class<?> clazz)
        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.
      • generateDeleteTableRequest

        DeleteTableRequest generateDeleteTableRequest​(Class<?> clazz)
        Parse the given POJO class and return the DeleteTableRequest for the DynamoDB table it represents.