dynobase-icon
Dynobase

Batch Write Using DynamoDB Mapper (Guide w/ Code Examples)

Rafal Wilinski

Provided by Rafal Wilinski

Last updated: October 23rd, 2026

BatchWriteItem puts or deletes several complete items in one request. This example writes two key-only sample items and retries unprocessed writes with bounded exponential backoff and jitter.

DynamoDBMapper belongs to AWS SDK for Java 1.x and cannot be constructed with a 2.x DynamoDbClient. The example below shows the SDK 2.x low-level equivalent. For mapped domain objects, use the DynamoDB Enhanced Client.

This example uses Java 17+ and the software.amazon.awssdk:dynamodb SDK 2.x dependency. Configure an AWS Region and credentials through your usual AWS profile or runtime role. The Orders table has String keys pk and sk; adapt the table and keys to your schema.

import java.util.*; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.dynamodb.model.*; public class Example { static AttributeValue s(String value) { return AttributeValue.builder().s(value).build(); } static Map<String, AttributeValue> key(String order) { return Map.of("pk", s("CUSTOMER#123"), "sk", s(order)); } public static void main(String[] args) throws InterruptedException { try (DynamoDbClient ddb = DynamoDbClient.create()) { List<WriteRequest> writes = new ArrayList<>(); for (String order : List.of("ORDER#001", "ORDER#002")) { writes.add(WriteRequest.builder().putRequest(PutRequest.builder().item(key(order)).build()).build()); } Map<String, List<WriteRequest>> pending = Map.of("Orders", writes); for (int attempt = 0; !pending.isEmpty(); attempt++) { if (attempt == 8) throw new IllegalStateException("Unprocessed writes: " + pending); if (attempt > 0) Thread.sleep((long) (Math.random() * Math.min(5000L, 100L << attempt))); pending = ddb.batchWriteItem(BatchWriteItemRequest.builder() .requestItems(pending).build()).unprocessedItems(); } } } }

A put replaces the entire existing item with that key. Batch writes cannot attach conditions or update individual attributes. Split larger inputs into groups of at most 25 operations and stay below the request-size limit.

Reference: AWS BatchWriteItem API. For related access patterns, see DynamoDB query examples.

Dynobase is a Professional GUI Client for DynamoDB

Start your 7-day free trial today

Product Features

Download
/
Pricing
/
Member Portal
/
Privacy
/
EULA
/
Twitter
© 2026 Dynobase
+
Still using AWS DynamoDB Console?
Try Dynobase to accelerate your DynamoDB workflow. Start your 7-day free trial today.