public final class DocumentTableSchema extends Object implements TableSchema<EnhancedDocument>
TableSchema
that builds a table schema based on DynamoDB Items.
In Amazon DynamoDB, an item is a collection of attributes. Each attribute has a name and a value. An attribute value can be a scalar, a set, or a document type
A DocumentTableSchema is used to create a DynamoDbTable
which provides read and writes access to DynamoDB table as
EnhancedDocument
.
DocumentTableSchema specifying primaryKey, sortKey and a customAttributeConverter can be created as below
DocumentTableSchema can also be created without specifying primaryKey and sortKey in which cases the
TableMetadata
of DocumentTableSchema will error if we try to access attributes from metaData. Also if
attributeConverterProviders are not provided then DefaultAttributeConverterProvider
will be used
Modifier and Type | Class and Description |
---|---|
static class |
DocumentTableSchema.Builder |
Modifier and Type | Method and Description |
---|---|
List<String> |
attributeNames()
Returns a complete list of attribute names that are mapped by this
TableSchema |
AttributeValue |
attributeValue(EnhancedDocument item,
String attributeName)
Returns a single attribute value from the modelled object.
|
static DocumentTableSchema.Builder |
builder() |
boolean |
isAbstract()
A boolean value that represents whether this
TableSchema is abstract which means that it cannot be used
to directly create records as it is lacking required structural elements to map to a table, such as a primary
key, but can be referred to and embedded by other schemata. |
Map<String,AttributeValue> |
itemToMap(EnhancedDocument item,
boolean ignoreNulls)
Takes a modelled object and converts it into a raw map of
AttributeValue that the DynamoDb low-level
SDK can work with. |
Map<String,AttributeValue> |
itemToMap(EnhancedDocument item,
Collection<String> attributes)
Takes a modelled object and extracts a specific set of attributes which are then returned as a map of
AttributeValue that the DynamoDb low-level SDK can work with. |
EnhancedType<EnhancedDocument> |
itemType()
Returns the
EnhancedType that represents the 'Type' of the Java object this table schema object maps to
and from. |
EnhancedDocument |
mapToItem(Map<String,AttributeValue> attributeMap)
Takes a raw DynamoDb SDK representation of a record in a table and maps it to a Java object.
|
TableMetadata |
tableMetadata()
Returns the object that describes the structure of the table being modelled by the mapper.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
builder, builder, builder, builder, converterForAttribute, documentSchemaBuilder, fromBean, fromClass, fromImmutableClass, mapToItem
public static DocumentTableSchema.Builder builder()
public EnhancedDocument mapToItem(Map<String,AttributeValue> attributeMap)
TableSchema
If attributes are missing from the map, that will not cause an error, however if attributes are found in the map which the mapper does not know how to map, an exception will be thrown.
If all attribute values in the attributeMap are null, null will be returned. Use TableSchema.mapToItem(Map, boolean)
instead if you need to preserve empty object.
API Implementors Note:
TableSchema.mapToItem(Map, boolean)
must be implemented if preserveEmptyObject
behavior is desired.
mapToItem
in interface TableSchema<EnhancedDocument>
attributeMap
- A map of String to AttributeValue
that contains all the raw attributes to map.TableSchema.mapToItem(Map, boolean)
public Map<String,AttributeValue> itemToMap(EnhancedDocument item, boolean ignoreNulls)
AttributeValue
that the DynamoDb low-level
SDK can work with.
This flag does not have significance for the Document API, unlike Java objects where the default value of an undefined
Object is null.In contrast to mapped classes, where a schema is present, the DocumentSchema is unaware of the entire
schema.Therefore, if an attribute is not present, it signifies that it is null, and there is no need to handle it in a
separate way.However, if the user explicitly wants to nullify certain attributes, then the user needs to set those
attributes as null in the Document that needs to be updated.itemToMap
in interface TableSchema<EnhancedDocument>
item
- The modelled Java object to convert into a map of attributes.ignoreNulls
- If set to true; any null values in the Java object will not be added to the output map.
If set to false; null values in the Java object will be added as AttributeValue
of
type 'nul' to the output map.AttributeValue
representing all the modelled attributes in the model object.public Map<String,AttributeValue> itemToMap(EnhancedDocument item, Collection<String> attributes)
TableSchema
AttributeValue
that the DynamoDb low-level SDK can work with. This method is typically used to extract
just the key attributes of a modelled item and will not ignore nulls on the modelled object.itemToMap
in interface TableSchema<EnhancedDocument>
item
- The modelled Java object to extract the map of attributes from.attributes
- A collection of attribute names to extract into the output map.AttributeValue
representing the requested modelled attributes in the model
object.public AttributeValue attributeValue(EnhancedDocument item, String attributeName)
TableSchema
attributeValue
in interface TableSchema<EnhancedDocument>
item
- The modelled Java object to extract the attribute from.attributeName
- The attribute name describing which attribute to extract.AttributeValue
representing the requested modelled attribute in the model object or
null if the attribute has not been set with a value in the modelled object.public TableMetadata tableMetadata()
TableSchema
tableMetadata
in interface TableSchema<EnhancedDocument>
TableMetadata
object that contains structural information about the table being modelled.public EnhancedType<EnhancedDocument> itemType()
TableSchema
EnhancedType
that represents the 'Type' of the Java object this table schema object maps to
and from.itemType
in interface TableSchema<EnhancedDocument>
EnhancedType
of the modelled item this TableSchema maps to.public List<String> attributeNames()
TableSchema
TableSchema
attributeNames
in interface TableSchema<EnhancedDocument>
public boolean isAbstract()
TableSchema
TableSchema
is abstract which means that it cannot be used
to directly create records as it is lacking required structural elements to map to a table, such as a primary
key, but can be referred to and embedded by other schemata.isAbstract
in interface TableSchema<EnhancedDocument>
Copyright © 2023. All rights reserved.