DynamoDB UpdateItem di Java (AWS SDK v2)
UpdateItem mengubah atribut tertentu dari satu item (dan membuat item jika belum ada), membiarkan segala hal lain tidak tersentuh. Di AWS SDK for Java 2.x Anda membangun UpdateItemRequest dengan 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());
}
}
}Penjelasan
key— primary key lengkap dari item yang diperbarui.updateExpression— satu atau lebih klausa:SETmenetapkan atribut (#upd0 = :updValue0men-setGenre;#upd1 = :updValue1men-setYear). Setiap atribut diberi alias viaexpressionAttributeNames, jadi reserved word sepertiYearselalu aman.ADDpada angka melakukan increment atomik (ADD #upd2 :updValue2menambah 1 keAwards) — aman di bawah konkurensi, tanpa race read-modify-write.REMOVEmenghapus sebuah atribut;DELETEmenghapus elemen dari sebuah set.
expressionAttributeValues— map:placeholder→ typed-AttributeValue.returnValues(ReturnValue.ALL_NEW)— mengembalikan item lengkap setelah pembaruan diresponse.attributes()(jugaUPDATED_NEW,ALL_OLD,UPDATED_OLD, atauNONE).- Semantik upsert —
UpdateItemmembuat item jika key tidak ada. TambahkanconditionExpression(mis.attribute_exists(Artist)) untuk update-only. - Lebih suka update expression daripada map
attributeUpdateslegacy — expression mendukung banyak klausa, alias, dan kondisi dalam satu request.
Lakukan secara visual
DynamoDB Expression Builder membangun klausa SET / ADD / REMOVE dengan map name/value dan menyalin kode yang bisa dijalankan.
Untuk mengedit item di GUI — ubah sebuah field, tinjau UpdateExpression yang dihasilkan, salin kodenya — unduh DynoTable.
Contoh terkait
- DynamoDB UpdateItem di Go — pembaruan yang sama dengan AWS SDK for Go v2.
- DynamoDB PutItem di Java — gantikan seluruh item sebagai gantinya.
- DynamoDB update expressions —
SET,ADD,REMOVE,DELETE, dan idiom. - Memahami ReturnValues — apa yang diberikan setiap opsi
ReturnValues. - "Attribute name is a reserved keyword" — mengapa map alias di sini tidak opsional.
- Error sintaks "Invalid UpdateExpression" — kesalahan sintaks SET/ADD yang umum, diuraikan.
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
Terakhir diverifikasi 2026-07-13 terhadap dokumentasi resmi AWS yang ditautkan di atas.