DynamoDB UpdateItem en Java (AWS SDK v2)
UpdateItem cambia atributos concretos de un item (y crea el item si no existe), dejando intacto todo lo demás. En AWS SDK para Java 2.x construyes un UpdateItemRequest con un updateExpression.
Code
import java.util.HashMap;
import java.util.Map;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
import software.amazon.awssdk.services.dynamodb.model.DynamoDbException;
import software.amazon.awssdk.services.dynamodb.model.ReturnValue;
import software.amazon.awssdk.services.dynamodb.model.UpdateItemRequest;
import software.amazon.awssdk.services.dynamodb.model.UpdateItemResponse;
public class UpdateItemExample {
public static void main(String[] args) {
try (DynamoDbClient ddb = DynamoDbClient.builder()
.region(Region.US_EAST_1)
.build()) {
Map<String, AttributeValue> key = new HashMap<>();
key.put("Artist", AttributeValue.builder().s("Arturo Sandoval").build());
key.put("SongTitle", AttributeValue.builder().s("Cubano Chant").build());
Map<String, String> names = new HashMap<>();
names.put("#upd0", "Genre");
names.put("#upd1", "Year");
names.put("#upd2", "Awards");
Map<String, AttributeValue> values = new HashMap<>();
values.put(":updValue0", AttributeValue.builder().s("Latin Jazz").build());
values.put(":updValue1", AttributeValue.builder().n("1994").build());
values.put(":updValue2", AttributeValue.builder().n("1").build());
UpdateItemRequest request = UpdateItemRequest.builder()
.tableName("Music")
.key(key)
.updateExpression("SET #upd0 = :updValue0, #upd1 = :updValue1 ADD #upd2 :updValue2")
.expressionAttributeNames(names)
.expressionAttributeValues(values)
.returnValues(ReturnValue.ALL_NEW)
.build();
UpdateItemResponse response = ddb.updateItem(request);
System.out.println(response.attributes()); // the item after the update
} catch (DynamoDbException e) {
System.err.println(e.getMessage());
}
}
}Explicación
key— la clave primaria completa del item a actualizar.updateExpression— una o más cláusulas:SETasigna atributos (#upd0 = :updValue0estableceGenre;#upd1 = :updValue1estableceYear). Cada atributo lleva un alias medianteexpressionAttributeNames, así que palabras reservadas comoYearestán siempre a salvo.ADDsobre un número hace un incremento atómico (ADD #upd2 :updValue2suma 1 aAwards) — seguro bajo concurrencia, sin condición de carrera de lectura-modificación-escritura.REMOVEelimina un atributo;DELETEquita elementos de un conjunto.
expressionAttributeValues— el mapa:placeholder→AttributeValuetipado.returnValues(ReturnValue.ALL_NEW)— devuelve el item completo tras la actualización enresponse.attributes()(tambiénUPDATED_NEW,ALL_OLD,UPDATED_OLDoNONE).- Semántica de upsert —
UpdateItemcrea el item si la clave no existe. Añade unconditionExpression(por ejemplo,attribute_exists(Artist)) para actualizar solo. - Prefiere una expresión de actualización antes que el mapa heredado
attributeUpdates— las expresiones admiten varias cláusulas, alias y condiciones en una sola solicitud.
Hazlo visualmente
El DynamoDB Expression Builder construye cláusulas SET / ADD / REMOVE con los mapas de nombres/valores y copia código ejecutable.
Para editar items en una interfaz gráfica — cambia un campo, revisa el UpdateExpression generado, copia el código — descarga DynoTable.
Ejemplos relacionados
- DynamoDB UpdateItem en Go — la misma actualización con AWS SDK para Go v2.
- DynamoDB PutItem en Java — reemplaza el item completo en su lugar.
- Expresiones de actualización de DynamoDB —
SET,ADD,REMOVE,DELETEe idiomas. - Entender ReturnValues — qué te da cada opción de
ReturnValues. - "Attribute name is a reserved keyword" — por qué el mapa de alias aquí no es opcional.
- Errores de sintaxis "Invalid UpdateExpression" — los errores comunes de sintaxis SET/ADD, descifrados.
References
- UpdateItem — Amazon DynamoDB API Reference
- Use UpdateItem with an AWS SDK or CLI — Amazon DynamoDB Developer Guide
- DynamoDbClient — AWS SDK for Java 2.x API Reference
- UpdateItemRequest — AWS SDK for Java 2.x API Reference
- Update expressions — Amazon DynamoDB Developer Guide
Verificado por última vez el 2026-07-13 contra la documentación oficial de AWS enlazada arriba.