Java'da DynamoDB GetItem (AWS SDK v2)
GetItem tek bir öğeyi tam birincil anahtarıyla okur. Java 2.x için AWS SDK'da bir GetItemRequest oluşturur ve bir DynamoDbClient üzerinde getItem'i çağırırsınız; her anahtar değeri, türlü oluşturucuyla oluşturulan bir AttributeValue'dur (dizeler için .s(...), sayılar için .n(...)).
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());
}
}
}AttributeValue eşlemeleri yerine düz Java nesnelerini mi tercih edersiniz? DynamoDB Enhanced Client (software.amazon.awssdk.enhanced.dynamodb), aynı düşük seviyeli çağrıların üzerinde öğeleri açıklamalı bean sınıflarına eşler.
Açıklama
tableName— okunacak tablo.key— her 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ı.GetItemeksik bir anahtarı kabul etmez.projectionExpression— isteğe bağlı; hangi özniteliklerin geri döneceğini sınırlar (okuma maliyetini değil, bant genişliğini azaltır). Yansıtılan her öznitelikexpressionAttributeNamesaracılığıyla bir takma ad alır (#proj0…#proj3); bu daYeargibi ayrılmış sözcükleri güvende tutar.item()— hiçbir öğe eşleşmediğinde yanıt bir boş eşleme taşır (aslanulldeğil); kullanmadan önceisEmpty()ile kontrol edin.- Varsayılan olarak okumalar nihai tutarlıdır. Güçlü tutarlı bir okuma için
.consistentRead(true)ekleyin (2× RCU'ya mal olur, yalnızca temel tablo). - İstemci
AutoCloseable'dır — try-with-resources bloğu HTTP bağlantılarını serbest bırakır.
Görsel olarak yapın
Projeksiyonu veya koşullu bir okumayı elle mi oluşturuyorsunuz? İfadeyi bir araya getirmek ve tam ProjectionExpression / ExpressionAttributeNames değerlerini kopyalamak için ücretsiz DynamoDB Expression Builder'ı kullanın.
Tabloları bir grafik arayüzde (GUI) gezinmek ve GetItem çalıştırmak için — anahtar formu, sonuç ızgarası, üretilen kodu tek tıkla kopyalama — DynoTable'ı indirin.
İlgili örnekler
- Go'da DynamoDB GetItem — Go v2 için AWS SDK ile aynı okuma.
- Java'da DynamoDB Query — tek bir öğe yerine bütün bir bölümü okuyun.
- DynamoDB bölüm anahtarları nasıl çalışır —
GetItem'in neden tam anahtara ihtiyaç duyduğu. - DynamoDB ResourceNotFoundException — buradaki her zamanki ilk hata: yanlış tablo adı veya bölge.
- "The provided key element does not match the schema" — geçirdiğiniz anahtar, tablonun anahtar şemasıyla eşleşmiyor.
References
- GetItem — Amazon DynamoDB API Reference
- Use GetItem with an AWS SDK or CLI — Amazon DynamoDB Developer Guide
- DynamoDbClient — AWS SDK for Java 2.x API Reference
- GetItemRequest — AWS SDK for Java 2.x API Reference
- Read consistency — Amazon DynamoDB Developer Guide
En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.