Java'da DynamoDB PutItem (AWS SDK v2)
PutItem bir öğenin tamamını yazar; onu oluşturur ya da aynı birincil anahtara sahip mevcut bir öğenin yerine geçer. Java 2.x için AWS SDK'da, item eşlemesi her özniteliği türlü bir AttributeValue olarak tutan bir PutItemRequest oluşturursunuz (dizeler için .s(...), sayılar için .n(...)).
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.ConditionalCheckFailedException;
import software.amazon.awssdk.services.dynamodb.model.DynamoDbException;
import software.amazon.awssdk.services.dynamodb.model.PutItemRequest;
public class PutItemExample {
public static void main(String[] args) {
try (DynamoDbClient ddb = DynamoDbClient.builder()
.region(Region.US_EAST_1)
.build()) {
Map<String, AttributeValue> item = new HashMap<>();
item.put("Artist", AttributeValue.builder().s("Arturo Sandoval").build());
item.put("SongTitle", AttributeValue.builder().s("Cubano Chant").build());
item.put("AlbumTitle", AttributeValue.builder().s("Danzon").build());
item.put("Year", AttributeValue.builder().n("1994").build());
item.put("Awards", AttributeValue.builder().n("0").build());
Map<String, String> names = new HashMap<>();
names.put("#cond0", "Artist");
names.put("#cond1", "SongTitle");
PutItemRequest request = PutItemRequest.builder()
.tableName("Music")
.item(item)
.conditionExpression("attribute_not_exists(#cond0) AND attribute_not_exists(#cond1)")
.expressionAttributeNames(names)
.build();
try {
ddb.putItem(request);
System.out.println("Song written");
} catch (ConditionalCheckFailedException e) {
System.out.println("A song with that key already exists — not overwritten");
}
} catch (DynamoDbException e) {
System.err.println(e.getMessage());
}
}
}Açıklama
item— tablonun tam birincil anahtarını, artı diğer öznitelikleri içermelidir. SayılarNtürü altında dizedir (AttributeValue.builder().n("1994")).- Put yerine geçer — koşul olmadan
PutItem, aynı anahtara sahip mevcut bir öğeyi sessizce üzerine yazar. Gerisini ezmeden birkaç özniteliği değiştirmek içinUpdateItemkullanın. conditionExpression— anahtar öznitelikleri üzerindeattribute_not_exists(...), yazmayı yalnızca oluşturma amaçlı bir eklemeye dönüştürür; öğe zaten varsa yazmaConditionalCheckFailedExceptionile başarısız olur. Bu, DynamoDB'nin iyimser-kilitleme ilkelidir.#cond0/#cond1takma adlarıexpressionAttributeNamesaracılığıylaArtist/SongTitle'a çözümlenir (ayrılmış sözcük güvenli).ConditionalCheckFailedException,DynamoDbException'ı genişletir — başarısız koşulun diğer hizmet hatalarından ayrı ele alınması için onu önce yakalayın (yukarıdaki içtry).- Üzerine yazılan öğeyi geri almak için
.returnValues(ReturnValue.ALL_OLD)ekleyin. - Düz Java nesnelerini mi tercih edersiniz? DynamoDB Enhanced Client (
software.amazon.awssdk.enhanced.dynamodb),AttributeValueeşlemeleri yerine açıklamalı bean sınıfları yazar.
Görsel olarak yapın
Koşullu bir put'u elle mi yazıyorsunuz? DynamoDB Expression Builder, ConditionExpression'ı bir araya getirir ve kodu kopyalar.
Öğeleri bir grafik arayüzde (GUI) eklemek ve düzenlemek için — öznitelik başına bir form, tür seçiciler ve kod olarak kopyalama — DynoTable'ı indirin.
İlgili örnekler
- Go'da DynamoDB PutItem — Go v2 için AWS SDK ile aynı koşullu yazma.
- Java'da DynamoDB UpdateItem — öğeyi yerine geçirmek yerine belirli öznitelikleri değiştirin.
- DynamoDB koşul ifadeleri —
attribute_not_exists, iyimser kilitleme ve daha fazlası. - DynamoDB ConditionalCheckFailedException — öğe zaten var olduğunda yalnızca-oluşturma koşulunun fırlattığı hata.
- DynamoDB ValidationException — hatalı biçimlendirilmiş bir öğe veya ifade için genel hata.
References
- PutItem — Amazon DynamoDB API Reference
- Use PutItem with an AWS SDK or CLI — Amazon DynamoDB Developer Guide
- DynamoDbClient — AWS SDK for Java 2.x API Reference
- PutItemRequest — AWS SDK for Java 2.x API Reference
- Condition expressions — Amazon DynamoDB Developer Guide
En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.