Class StaticTableSchema<T>

java.lang.Object
software.amazon.awssdk.enhanced.dynamodb.mapper.WrappedTableSchema<T,StaticImmutableTableSchema<T,T>>
software.amazon.awssdk.enhanced.dynamodb.mapper.StaticTableSchema<T>
All Implemented Interfaces:
TableSchema<T>

@ThreadSafe public final class StaticTableSchema<T> extends WrappedTableSchema<T,StaticImmutableTableSchema<T,T>>
Implementation of TableSchema that builds a schema based on directly declared attributes and methods to get and set those attributes. Just like StaticImmutableTableSchema which is the equivalent implementation for immutable objects, this is the most direct, and thus fastest, implementation of TableSchema.

Example using a fictional 'Customer' data item class:-


 static final TableSchema<Customer> CUSTOMER_TABLE_SCHEMA =
      StaticTableSchema.builder(Customer.class)
        .newItemSupplier(Customer::new)
        .addAttribute(String.class, a -> a.name("account_id")
                                          .getter(Customer::getAccountId)
                                          .setter(Customer::setAccountId)
                                          .tags(primaryPartitionKey()))
        .addAttribute(Integer.class, a -> a.name("sub_id")
                                           .getter(Customer::getSubId)
                                           .setter(Customer::setSubId)
                                           .tags(primarySortKey()))
        .addAttribute(String.class, a -> a.name("name")
                                          .getter(Customer::getName)
                                          .setter(Customer::setName)
                                          .tags(secondaryPartitionKey("customers_by_name")))
        .addAttribute(Instant.class, a -> a.name("created_date")
                                           .getter(Customer::getCreatedDate)
                                           .setter(Customer::setCreatedDate)
                                           .tags(secondarySortKey("customers_by_date"),
                                                 secondarySortKey("customers_by_name")))
        .build();