DynamoDB DeleteItem in Java (AWS SDK v2)

DeleteItem rimuove un singolo Item tramite la sua chiave primaria completa. In AWS SDK for Java 2.x costruisci un DeleteItemRequest e chiami deleteItem su un DynamoDbClient; con ReturnValue.ALL_OLD la risposta ti dice se qualcosa è stato effettivamente eliminato.

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());
        }
    }
}

Spiegazione

  • key — deve includere ogni attributo della chiave primaria: la sola chiave di partizione per una chiave semplice, o chiave di partizione e chiave di ordinamento per una chiave composita.
  • Il delete è idempotente — eliminare una chiave che non esiste è comunque un successo (nessun errore). Con returnValues(ReturnValue.ALL_OLD) l'Item eliminato torna in response.attributes(); una mappa vuota significa che non c'era nulla.
  • ReturnValues per DeleteItem supporta solo NONE (predefinito) e ALL_OLD — le opzioni ALL_NEW/UPDATED_* appartengono a UpdateItem.
  • Eliminazione condizionale — aggiungi una conditionExpression (ad es. attribute_exists(Artist) per fallire su un Item mancante, o Awards = :zero per una guardia su un valore); una condizione fallita solleva ConditionalCheckFailedException.
  • DeleteItem rimuove un Item per chiamata. Non esiste un'API "delete all" — per svuotare una tabella, itera le chiavi con Scan e raggruppa le eliminazioni in batch, oppure elimina e ricrea la tabella.

Fallo visivamente

Vuoi proteggere l'eliminazione con una condizione? Il DynamoDB Expression Builder assembla la ConditionExpression e le mappe di nomi/valori per te.

Per eliminare Item da una GUI — seleziona le righe, conferma, fatto, con il codice generato a un clic di distanza — scarica DynoTable.

Esempi correlati

References

Ultima verifica 2026-07-13 rispetto alla documentazione ufficiale AWS collegata sopra.

Lavora con DynamoDB senza la Console

DynoTable è un client desktop veloce per DynamoDB — sfoglia le tabelle, esegui query in stile SQL e modifica gli Item localmente.