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.GetItemtidak 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) viaexpressionAttributeNames, yang menjaga reserved word sepertiYeartetap aman.item()— ketika tidak ada item yang cocok, response membawa map kosong (tidak pernahnull); periksaisEmpty()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
- DynamoDB GetItem di Go — pembacaan yang sama dengan AWS SDK for Go v2.
- DynamoDB Query di Java — baca seluruh partisi alih-alih satu item.
- Cara kerja partition key DynamoDB — mengapa
GetItemmembutuhkan key lengkap. - DynamoDB ResourceNotFoundException — error pertama yang biasa muncul di sini: nama tabel atau region salah.
- "The provided key element does not match the schema" — key yang Anda lewatkan tidak cocok dengan key schema tabel.
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
Terakhir diverifikasi 2026-07-13 terhadap dokumentasi resmi AWS yang ditautkan di atas.