Class EntityTableBuilder<T>
java.lang.Object
dev.hogwai.dynamodb.simplified.entity.EntityTableBuilder<T>
- Type Parameters:
T- the entity type
Builder for creating
EntityTable instances for single-table design.
The entity class must be annotated with @Entity and may use
@KeyComponent and @KeyPrefix annotations to define the entity schema.
Usage:
EntityTable<User> userTable = new EntityTableBuilder<>(User.class)
.dynamoDbClient(dynamoDbClient)
.build();
Alternatively, use DynamoSimplifiedClient.entityTable(Class)
for a simpler end-to-end flow.
-
Constructor Summary
ConstructorsConstructorDescriptionEntityTableBuilder(@NonNull Class<T> entityClass) Creates a new builder for the given entity class. -
Method Summary
Modifier and TypeMethodDescription@NonNull EntityTable<T> build()Builds theEntityTableinstance.static <T> @NonNull EntityTable<T> create(@NonNull Class<T> entityClass, @NonNull software.amazon.awssdk.services.dynamodb.DynamoDbClient dynamoDbClient, @NonNull software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient enhancedClient) Creates anEntityTablefor the given entity class using the provided DynamoDB clients.static <T> @NonNull AsyncEntityTable<T> createAsync(@NonNull Class<T> entityClass, @NonNull software.amazon.awssdk.services.dynamodb.DynamoDbAsyncClient dynamoDbAsyncClient, @NonNull software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedAsyncClient enhancedAsyncClient) Creates anAsyncEntityTablefor the given entity class using the provided async DynamoDB clients.dynamoDbClient(@NonNull software.amazon.awssdk.services.dynamodb.DynamoDbClient client) Sets the low-levelDynamoDbClientto use.enhancedClient(@NonNull software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient client) Sets theDynamoDbEnhancedClientto use.
-
Constructor Details
-
EntityTableBuilder
-
-
Method Details
-
dynamoDbClient
public EntityTableBuilder<T> dynamoDbClient(@NonNull software.amazon.awssdk.services.dynamodb.DynamoDbClient client) Sets the low-levelDynamoDbClientto use.- Parameters:
client- the DynamoDB client- Returns:
- this builder for chaining
-
enhancedClient
public EntityTableBuilder<T> enhancedClient(@NonNull software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient client) Sets theDynamoDbEnhancedClientto use.If not set, one will be built from the provided
dynamoDbClient(DynamoDbClient).- Parameters:
client- the enhanced DynamoDB client- Returns:
- this builder for chaining
-
create
public static <T> @NonNull EntityTable<T> create(@NonNull Class<T> entityClass, @NonNull software.amazon.awssdk.services.dynamodb.DynamoDbClient dynamoDbClient, @NonNull software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient enhancedClient) Creates anEntityTablefor the given entity class using the provided DynamoDB clients.This is a convenience method equivalent to:
new EntityTableBuilder<>(entityClass) .dynamoDbClient(dynamoDbClient) .enhancedClient(enhancedClient) .build();- Type Parameters:
T- the entity type- Parameters:
entityClass- the entity class annotated with@EntitydynamoDbClient- the low-level DynamoDB clientenhancedClient- the enhanced DynamoDB client- Returns:
- a new
EntityTable<T>
-
createAsync
public static <T> @NonNull AsyncEntityTable<T> createAsync(@NonNull Class<T> entityClass, @NonNull software.amazon.awssdk.services.dynamodb.DynamoDbAsyncClient dynamoDbAsyncClient, @NonNull software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedAsyncClient enhancedAsyncClient) Creates anAsyncEntityTablefor the given entity class using the provided async DynamoDB clients.This is a convenience method equivalent to:
new AsyncEntityTableBuilder<>(entityClass) .dynamoDbAsyncClient(dynamoDbAsyncClient) .enhancedAsyncClient(enhancedAsyncClient) .build();- Type Parameters:
T- the entity type- Parameters:
entityClass- the entity class annotated with@EntitydynamoDbAsyncClient- the low-level async DynamoDB clientenhancedAsyncClient- the enhanced async DynamoDB client- Returns:
- a new
AsyncEntityTable<T>
-
build
Builds theEntityTableinstance.Reads the entity schema from annotations, creates the underlying DynamoDB table mapping, and wraps it in an
DefaultEntityTable.- Returns:
- a new
EntityTable<T> - Throws:
IllegalArgumentException- if the entity class is not annotated with@EntityNullPointerException- if noDynamoDbClientis set
-