DynamoDB DeleteItem in Java (AWS SDK v2)
DeleteItem entfernt ein einzelnes Item über seinen vollständigen Primärschlüssel. Im AWS SDK for Java 2.x baust du einen DeleteItemRequest und rufst deleteItem auf einem DynamoDbClient auf; mit ReturnValue.ALL_OLD sagt dir die Antwort, ob tatsächlich etwas gelöscht wurde.
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());
}
}
}Erklärung
key— muss jedes Primärschlüssel-Attribut enthalten: den Partitionsschlüssel allein bei einem einfachen Schlüssel oder Partitions- und Sortierschlüssel bei einem zusammengesetzten Schlüssel.- Delete ist idempotent — einen Schlüssel zu löschen, der nicht existiert, ist trotzdem ein Erfolg (kein Fehler). Mit
returnValues(ReturnValue.ALL_OLD)kommt das gelöschte Item inresponse.attributes()zurück; eine leere Map bedeutet, dass nichts da war. ReturnValuesfürDeleteItemunterstützt nurNONE(Standard) undALL_OLD— dieALL_NEW/UPDATED_*-Optionen gehören zuUpdateItem.- Bedingtes Löschen — füge eine
conditionExpressionhinzu (z. B.attribute_exists(Artist), um bei einem fehlenden Item zu scheitern, oderAwards = :zero, um auf einen Wert zu prüfen); eine fehlgeschlagene Bedingung wirftConditionalCheckFailedException. DeleteItementfernt ein Item pro Aufruf. Es gibt keine "Alles löschen"-API — um eine Tabelle zu leeren, iteriere Schlüssel mitScanund batche die Löschungen, oder verwerfe die Tabelle und erstelle sie neu.
Visuell erledigen
Die Löschung mit einer Bedingung absichern? Der DynamoDB Expression Builder stellt die ConditionExpression und die Name-/Wert-Maps für dich zusammen.
Um Items aus einer GUI zu löschen — Zeilen auswählen, bestätigen, fertig, mit dem generierten Code einen Klick entfernt — lade DynoTable herunter.
Verwandte Beispiele
- DynamoDB DeleteItem in Go — dieselbe Löschung mit AWS SDK for Go v2.
- DynamoDB PutItem in Java — die Schreibseite desselben Schlüssels.
- DynamoDB-Bedingungsausdrücke — Löschungen mit
attribute_existsund Wertprüfungen absichern. - DynamoDB ConditionalCheckFailedException — was eine fehlgeschlagene bedingte Löschung wirft und wann sie erwartet wird.
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
Zuletzt verifiziert am 2026-07-13 gegen die oben verlinkte offizielle AWS-Dokumentation.