기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
데이터 TableSchema
클래스에서 a 생성
TableSchema
를 사용하면 향상된 클라이언트가 DynamoDB 속성 값을 클라이언트 측 클래스와 매핑하거나 클라이언트 측 클래스에서 가져올 수 있습니다. 이 자습서에서는 정적 데이터 클래스에서 파생되고 빌더를 사용하여 코드에서 생성되는 TableSchema
에 대해 알아봅니다.
주석이 달린 데이터 클래스 사용하기
Java 2.x용 SDK에는 데이터 클래스와 함께 신속하게 TableSchema
를 생성하는 데 사용할 수 있는 일련의 주석
JavaBean 사양을DynamoDbBean
임을 나타내는 클래스 수준 주석을 포함하세요. 또한 최소한 접근자 또는 설정자에 기본 키 속성에 대한 DynamoDbPartitionKey
주석을 포함해야 합니다.
속성 수준 주석을 게터 또는 세터에 적용할 수 있지만 둘 다에 적용할 수는 없습니다.
참고
property
이 용어는 일반적으로 a로 캡슐화된 값에 사용됩니다. JavaBean 하지만 이 가이드에서는 DynamoDB에서 사용하는 용어와의 일관성을 위해 용어 attribute
를 대신 사용합니다.
다음 Customer
클래스는 클래스 정의를 DynamoDB 테이블에 연결하는 주석을 보여줍니다.
Customer
클래스
package org.example.tests.model; import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbBean; import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbPartitionKey; import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbSortKey; import java.time.Instant; @DynamoDbBean public class Customer { private String id; private String name; private String email; private Instant regDate; @DynamoDbPartitionKey public String getId() { return this.id; } public void setId(String id) { this.id = id; } public String getCustName() { return this.name; } public void setCustName(String name) { this.name = name; } @DynamoDbSortKey public String getEmail() { return this.email; } public void setEmail(String email) { this.email = email; } public Instant getRegistrationDate() { return this.regDate; } public void setRegistrationDate(Instant registrationDate) { this.regDate = registrationDate; } @Override public String toString() { return "Customer [id=" + id + ", name=" + name + ", email=" + email + ", regDate=" + regDate + "]"; } }
주석이 달린 데이터 클래스를 만든 후 다음 코드 조각에 표시된 것처럼 이 클래스를 사용하여 TableSchema
를 생성합니다.
static final TableSchema<Customer> customerTableSchema = TableSchema.fromBean(Customer.class);
TableSchema
는 정적이고 변경할 수 없도록 설계되었습니다. 일반적으로 클래스 로드 시 인스턴스화할 수 있습니다.
정적 TableSchema.fromBean()
팩토리 메서드는 Bean을 검사하여 DynamoDB 속성과 데이터 클래스 속성 (속성) 간의 매핑을 생성합니다.
여러 데이터 클래스로 구성된 데이터 모델을 사용하는 예제는 중첩 속성 작업 단원의 Person
클래스를 참조하세요.
빌더 사용
코드에 테이블 스키마를 정의하면 Bean 인트로스펙션 비용을 건너뛸 수 있습니다. 스키마를 코딩하면 클래스가 JavaBean 이름 지정 표준을 따르거나 주석을 달 필요가 없습니다. 다음 예제는 빌더를 사용하며 주석을 사용하는 Customer
클래스 예제와 동일합니다.
static final TableSchema<Customer> customerTableSchema = TableSchema.builder(Customer.class) .newItemSupplier(Customer::new) .addAttribute(String.class, a -> a.name("id") .getter(Customer::getId) .setter(Customer::setId) .tags(StaticAttributeTags.primaryPartitionKey())) .addAttribute(String.class, a -> a.name("email") .getter(Customer::getEmail) .setter(Customer::setEmail) .tags(StaticAttributeTags.primarySortKey())) .addAttribute(String.class, a -> a.name("name") .getter(Customer::getCustName) .setter(Customer::setCustName)) .addAttribute(Instant.class, a -> a.name("registrationDate") .getter(Customer::getRegistrationDate) .setter(Customer::setRegistrationDate)) .build();