Java'da DynamoDB DeleteItem (AWS SDK v2)
DeleteItem, tek bir öğeyi tam birincil anahtarıyla kaldırır. Java 2.x için AWS SDK'da bir DeleteItemRequest oluşturur ve bir DynamoDbClient üzerinde deleteItem'i çağırırsınız; ReturnValue.ALL_OLD ile yanıt, gerçekten bir şeyin silinip silinmediğini size söyler.
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.DeleteItemRequest;
import software.amazon.awssdk.services.dynamodb.model.DeleteItemResponse;
import software.amazon.awssdk.services.dynamodb.model.DynamoDbException;
import software.amazon.awssdk.services.dynamodb.model.ReturnValue;
public class DeleteItemExample {
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());
DeleteItemRequest request = DeleteItemRequest.builder()
.tableName("Music")
.key(key)
.returnValues(ReturnValue.ALL_OLD)
.build();
DeleteItemResponse response = ddb.deleteItem(request);
if (response.attributes().isEmpty()) {
System.out.println("No item with that key existed");
} else {
System.out.println("Deleted: " + response.attributes());
}
} catch (DynamoDbException e) {
System.err.println(e.getMessage());
}
}
}Açıklama
key— her birincil anahtar özniteliğini içermelidir: basit bir anahtar için yalnızca bölüm anahtarı ya da bileşik bir anahtar için bölüm ve sıralama anahtarı.- Silme idempotenttir — var olmayan bir anahtarı silmek yine de bir başarıdır (hata yok).
returnValues(ReturnValue.ALL_OLD)ile silinen öğeresponse.attributes()içinde geri döner; bir boş eşleme orada hiçbir şey olmadığı anlamına gelir. DeleteItemiçinReturnValuesyalnızcaNONE(varsayılan) veALL_OLD'u destekler —ALL_NEW/UPDATED_*seçenekleriUpdateItem'a aittir.- Koşullu silme — bir
conditionExpressionekleyin (örneğin var olmayan bir öğede başarısız olmak içinattribute_exists(Artist)ya da bir değer üzerinde korumak içinAwards = :zero); başarısız bir koşulConditionalCheckFailedExceptionfırlatır. DeleteItem, çağrı başına bir öğe kaldırır. "Tümünü sil" API'si yoktur — bir tabloyu boşaltmak içinScanile anahtarlar üzerinde yineleyin ve silmeleri toplu hâle getirin ya da tabloyu düşürüp yeniden oluşturun.
Görsel olarak yapın
Silmeyi bir koşulla mı koruyorsunuz? DynamoDB Expression Builder, ConditionExpression'ı ve ad/değer eşlemelerini sizin için bir araya getirir.
Bir grafik arayüzden (GUI) öğe silmek için — satırları seçin, onaylayın, bitti; üretilen kod bir tık uzakta — DynoTable'ı indirin.
İlgili örnekler
- Go'da DynamoDB DeleteItem — Go v2 için AWS SDK ile aynı silme.
- Java'da DynamoDB PutItem — aynı anahtarın yazma tarafı.
- DynamoDB koşul ifadeleri — silmeleri
attribute_existsve değer kontrolleriyle koruyun. - DynamoDB ConditionalCheckFailedException — başarısız bir koşullu silmenin ne fırlattığı ve ne zaman beklendiği.
References
- DeleteItem — Amazon DynamoDB API Reference
- Use DeleteItem with an AWS SDK or CLI — Amazon DynamoDB Developer Guide
- DynamoDbClient — AWS SDK for Java 2.x API Reference
- DeleteItemRequest — 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ı.