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

  • keyher 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 öğe response.attributes() içinde geri döner; bir boş eşleme orada hiçbir şey olmadığı anlamına gelir.
  • DeleteItem için ReturnValues yalnızca NONE (varsayılan) ve ALL_OLD'u desteklerALL_NEW/UPDATED_* seçenekleri UpdateItem'a aittir.
  • Koşullu silme — bir conditionExpression ekleyin (örneğin var olmayan bir öğede başarısız olmak için attribute_exists(Artist) ya da bir değer üzerinde korumak için Awards = :zero); başarısız bir koşul ConditionalCheckFailedException fırlatır.
  • DeleteItem, çağrı başına bir öğe kaldırır. "Tümünü sil" API'si yoktur — bir tabloyu boşaltmak için Scan ile 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

References

En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.

Console olmadan DynamoDB ile çalışın

DynoTable, DynamoDB için hızlı bir masaüstü istemcisidir — tablolara göz atın, SQL tarzı sorgular çalıştırın ve item'ları yerel olarak düzenleyin.