Java'da DynamoDB UpdateItem (AWS SDK v2)
UpdateItem, bir öğenin belirli özniteliklerini değiştirir (ve öğe yoksa onu oluşturur), geri kalan her şeye dokunmadan bırakır. Java 2.x için AWS SDK'da bir updateExpression ile bir UpdateItemRequest oluşturursunuz.
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());
}
}
}Açıklama
key— güncellenecek öğenin tam birincil anahtarı.updateExpression— bir veya daha fazla yan tümce:SETöznitelikleri atar (#upd0 = :updValue0,Genre'yi ayarlar;#upd1 = :updValue1,Year'ı ayarlar). Her öznitelikexpressionAttributeNamesaracılığıyla bir takma ad alır, böyleceYeargibi ayrılmış sözcükler her zaman güvenlidir.- Bir sayı üzerinde
ADD, atomik bir artış yapar (ADD #upd2 :updValue2,Awards'a 1 ekler) — eşzamanlılık altında güvenli, oku-değiştir-yaz yarışı yok.REMOVEbir özniteliği siler;DELETEbir kümeden öğeleri kaldırır.
expressionAttributeValues—:placeholder→ türlü-AttributeValueeşlemesi.returnValues(ReturnValue.ALL_NEW)— güncellemeden sonra öğenin tamamınıresponse.attributes()içinde döndürür (ayrıcaUPDATED_NEW,ALL_OLD,UPDATED_OLDveyaNONE).- Upsert anlamları — anahtar yoksa
UpdateItemöğeyi oluşturur. Yalnızca-güncelleme için birconditionExpression(örneğinattribute_exists(Artist)) ekleyin. - Eski
attributeUpdateseşlemesi yerine bir güncelleme ifadesini tercih edin — ifadeler tek bir istekte birden çok yan tümceyi, takma adları ve koşulları destekler.
Görsel olarak yapın
DynamoDB Expression Builder, SET / ADD / REMOVE yan tümcelerini ad/değer eşlemeleriyle oluşturur ve çalıştırılabilir kodu kopyalar.
Öğeleri bir grafik arayüzde (GUI) düzenlemek için — bir alanı değiştirin, üretilen UpdateExpression'ı gözden geçirin, kodu kopyalayın — DynoTable'ı indirin.
İlgili örnekler
- Go'da DynamoDB UpdateItem — Go v2 için AWS SDK ile aynı güncelleme.
- Java'da DynamoDB PutItem — bunun yerine öğenin tamamını değiştirin.
- DynamoDB güncelleme ifadeleri —
SET,ADD,REMOVE,DELETEve deyimler. - ReturnValues'ı anlama — her
ReturnValuesseçeneğinin size ne verdiği. - "Attribute name is a reserved keyword" — buradaki takma ad eşlemesinin neden isteğe bağlı olmadığı.
- "Invalid UpdateExpression" söz dizimi hataları — çözümlenmiş yaygın SET/ADD söz dizimi hataları.
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
En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.