package com.example.myapp; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbTable; import software.amazon.awssdk.enhanced.dynamodb.TableSchema; import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbBean; import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbPartitionKey; import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbSortKey; import software.amazon.awssdk.enhanced.dynamodb.model.CreateTableEnhancedRequest; import software.amazon.awssdk.services.dynamodb.model.ProvisionedThroughput; import java.util.Map; public class CreateTableProvisioned { public static void main(String[] args) { // Create Client DynamoDbEnhancedClient enhancedClient = DynamoDbEnhancedClient.builder().build(); // Map Table Using Bean DynamoDbTable table = enhancedClient.table("RetailDatabase", TableSchema.fromBean(Customer.class)); table.createTable(CreateTableEnhancedRequest.builder() .provisionedThroughput(ProvisionedThroughput.builder() .readCapacityUnits(5L) .writeCapacityUnits(5L) .build()) .build()); } // Customer Class @DynamoDbBean public static class Customer { private String pk; private String sk; private String name; private String firstName; private String lastName; private Map address; private String username; public Customer() { } // Partition Keys @DynamoDbPartitionKey public String getPk() { return pk; } public void setPk(String pk) { this.pk = pk; } @DynamoDbSortKey public String getSk() { return sk; } public void setSk(String sk) { this.sk = sk; } // Attributes public String getName() { return name; } public void setName(String name) { this.name = name; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public Map getAddress() { return address; } public void setAddress(Map address) { this.address = address; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } // Static Builder Class public static class Builder { private String pk; private String sk; private String name; private String firstName; private String lastName; private Map address; private String username; public Builder(String pk) { this.pk = pk; } public Builder withSk(String sk) { this.sk = sk; return this; } public Builder withName(String name) { this.name = name; return this; } public Builder withFirstName(String firstName) { this.firstName = firstName; return this; } public Builder withLastName(String lastName) { this.lastName = lastName; return this; } public Builder withAddress(Map address){ this.address = address; return this; } public Builder withUsername(String username) { this.username = username; return this; } public Customer build() { Customer cust = new Customer(); cust.pk = this.pk; cust.sk = this.sk; cust.name = this.name; cust.firstName = this.firstName; cust.lastName = this.lastName; cust.address = this.address; cust.username = this.username; return cust; } } } }