Java(AWS SDK v2)에서의 DynamoDB GetItem
GetItem은 전체 기본 키로 단일 항목을 읽습니다. AWS SDK for Java 2.x에서는 GetItemRequest를 빌드하고 DynamoDbClient에서 getItem을 호출합니다. 모든 키 값은 타입 지정 빌더(문자열은 .s(...), 숫자는 .n(...))로 만든 AttributeValue입니다.
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 맵보다 평범한 Java 객체를 선호하시나요? DynamoDB Enhanced Client(software.amazon.awssdk.enhanced.dynamodb)는 동일한 저수준 호출 위에서 항목을 어노테이션이 붙은 빈 클래스에 매핑합니다.
Explanation
tableName— 읽을 테이블입니다.key— 모든 기본 키 속성을 포함해야 합니다. 단순 키는 파티션 키만, 복합 키는 파티션 키 및 정렬 키를 포함해야 합니다.GetItem은 일부만 있는 키를 허용하지 않습니다.projectionExpression— 선택 사항으로, 어떤 속성을 반환할지 제한합니다(대역폭은 절약하지만 읽기 비용은 아닙니다). 투영되는 모든 속성은expressionAttributeNames를 통해 별칭 처리(#proj0…#proj3)되어Year같은 예약어를 안전하게 유지합니다.item()— 일치하는 항목이 없으면 응답은 빈 맵을 담습니다(절대null이 아님). 사용하기 전에isEmpty()를 확인하세요.- 읽기는 기본적으로 최종적 일관성을 따릅니다. 강력한 일관성 읽기(RCU 2배, 기본 테이블만)를 원하면
.consistentRead(true)를 추가하세요. - 클라이언트는
AutoCloseable입니다 — try-with-resources 블록이 HTTP 연결을 해제합니다.
Do it visually
투영이나 조건부 읽기를 직접 만들고 계신가요? 무료 DynamoDB Expression Builder로 표현식을 조립하고 정확한 ProjectionExpression / ExpressionAttributeNames 값을 복사하세요.
테이블을 탐색하고 GUI에서 GetItem을 실행하려면 — 키 폼, 결과 그리드, 생성된 코드를 원클릭으로 복사 — DynoTable을 다운로드하세요.
Related examples
- DynamoDB GetItem in Go — AWS SDK for Go v2를 사용한 동일한 읽기.
- DynamoDB Query in Java — 항목 하나 대신 파티션 전체를 읽기.
- How DynamoDB partition keys work —
GetItem에 전체 키가 필요한 이유. - DynamoDB ResourceNotFoundException — 여기서 흔히 처음 만나는 오류: 잘못된 테이블 이름 또는 리전.
- "The provided key element does not match the schema" — 전달한 키가 테이블의 키 스키마와 일치하지 않는 경우.
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
Last verified 2026-07-13 against the official AWS documentation linked above.