DynamoDB GetItem di Java (AWS SDK v2)

GetItem membaca satu item berdasarkan primary key lengkap-nya. Di AWS SDK for Java 2.x Anda membangun GetItemRequest dan memanggil getItem pada DynamoDbClient; setiap nilai key adalah AttributeValue yang dibangun dengan typed builder (.s(...) untuk string, .n(...) untuk angka).

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.DynamoDbException;
import software.amazon.awssdk.services.dynamodb.model.GetItemRequest;

public class GetItemExample {
    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());

            Map<String, String> names = new HashMap<>();
            names.put("#proj0", "Artist");
            names.put("#proj1", "SongTitle");
            names.put("#proj2", "AlbumTitle");
            names.put("#proj3", "Year");

            GetItemRequest request = GetItemRequest.builder()
                    .tableName("Music")
                    .key(key)
                    .projectionExpression("#proj0, #proj1, #proj2, #proj3")
                    .expressionAttributeNames(names)
                    .build();

            Map<String, AttributeValue> item = ddb.getItem(request).item();
            if (item.isEmpty()) {
                System.out.println("Item not found");
            } else {
                System.out.println(item);
            }
        } catch (DynamoDbException e) {
            System.err.println(e.getMessage());
        }
    }
}

Lebih suka objek Java biasa daripada map AttributeValue? DynamoDB Enhanced Client (software.amazon.awssdk.enhanced.dynamodb) memetakan item ke kelas bean beranotasi di atas panggilan low-level yang sama.

Penjelasan

  • tableName — tabel yang dibaca.
  • key — harus menyertakan setiap atribut primary key: partition key saja untuk key sederhana, atau partition dan sort key untuk key komposit. GetItem tidak menerima key yang tidak lengkap.
  • projectionExpression — opsional; membatasi atribut mana yang kembali (menghemat bandwidth, bukan biaya baca). Setiap atribut yang diproyeksikan diberi alias (#proj0#proj3) via expressionAttributeNames, yang menjaga reserved word seperti Year tetap aman.
  • item() — ketika tidak ada item yang cocok, response membawa map kosong (tidak pernah null); periksa isEmpty() sebelum menggunakannya.
  • Secara default pembacaan bersifat eventually consistent. Tambahkan .consistentRead(true) untuk pembacaan strongly-consistent (biaya 2× RCU, hanya base table).
  • Client bersifat AutoCloseable — blok try-with-resources melepaskan koneksi HTTP-nya.

Lakukan secara visual

Membangun proyeksi atau pembacaan bersyarat dengan tangan? Gunakan DynamoDB Expression Builder gratis untuk menyusun expression dan menyalin nilai ProjectionExpression / ExpressionAttributeNames yang persis.

Untuk menelusuri tabel dan menjalankan GetItem di GUI — form key, grid hasil, salin sekali klik kode yang dihasilkan — 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.