DynamoDB DeleteItem di Java (AWS SDK v2)

DeleteItem menghapus satu item berdasarkan primary key lengkap-nya. Di AWS SDK for Java 2.x Anda membangun DeleteItemRequest dan memanggil deleteItem pada DynamoDbClient; dengan ReturnValue.ALL_OLD, response memberi tahu Anda apakah ada sesuatu yang benar-benar terhapus.

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

Penjelasan

  • key — harus menyertakan setiap atribut primary key: partition key saja untuk key sederhana, atau partition dan sort key untuk key komposit.
  • Delete bersifat idempoten — menghapus key yang tidak ada tetap merupakan keberhasilan (tanpa error). Dengan returnValues(ReturnValue.ALL_OLD), item yang terhapus kembali di response.attributes(); map kosong berarti tidak ada apa-apa di sana.
  • ReturnValues untuk DeleteItem hanya mendukung NONE (default) dan ALL_OLD — opsi ALL_NEW/UPDATED_* milik UpdateItem.
  • Conditional delete — tambahkan conditionExpression (mis. attribute_exists(Artist) untuk gagal pada item yang hilang, atau Awards = :zero untuk menjaga pada sebuah value); kondisi yang gagal melempar ConditionalCheckFailedException.
  • DeleteItem menghapus satu item per panggilan. Tidak ada API "delete all" — untuk mengosongkan tabel, iterasi key dengan Scan dan batch penghapusannya, atau drop dan buat ulang tabel.

Lakukan secara visual

Menjaga penghapusan dengan sebuah kondisi? DynamoDB Expression Builder menyusun ConditionExpression dan map name/value untuk Anda.

Untuk menghapus item dari GUI — pilih baris, konfirmasi, selesai, dengan kode yang dihasilkan hanya satu klik jauhnya — unduh DynoTable.

Contoh terkait

References

Terakhir diverifikasi 2026-07-13 terhadap dokumentasi resmi AWS yang ditautkan di atas.

Bekerja dengan DynamoDB tanpa Console

DynoTable adalah klien desktop yang cepat untuk DynamoDB — jelajahi tabel, jalankan query gaya SQL, dan edit Item secara lokal.