Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menghasilkan TableSchema
dari kelas data
A TableSchema
memungkinkan klien yang disempurnakan untuk memetakan nilai atribut DynamoDB ke dan dari kelas sisi klien Anda. Dalam tutorial ini, Anda belajar tentang TableSchema
s yang berasal dari kelas data statis dan dihasilkan dari kode dengan menggunakan pembangun.
Gunakan kelas data beranotasi
The SDK for Java 2.x mencakup serangkaian anotasiTableSchema
untuk memetakan kelas Anda ke tabel.
Mulailah dengan membuat kelas data yang sesuai dengan JavaBean spesifikasiDynamoDbBean
Juga, minimal, sertakan DynamoDbPartitionKey
anotasi pada pengambil atau penyetel untuk atribut kunci utama.
Anda dapat menerapkan anotasi tingkat atribut ke getter atau setter, tetapi tidak keduanya.
catatan
Istilah property
ini biasanya digunakan untuk nilai yang dienkapsulasi dalam a. JavaBean Namun, panduan ini menggunakan istilah attribute
sebagai gantinya, agar konsisten dengan terminologi yang digunakan oleh DynamoDB.
Customer
Kelas berikut menunjukkan anotasi yang menghubungkan definisi kelas ke tabel DynamoDB.
Customer
kelas
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 + "]"; } }
Setelah Anda membuat kelas data beranotasi, gunakan untuk membuatTableSchema
, seperti yang ditunjukkan pada cuplikan berikut.
static final TableSchema<Customer> customerTableSchema = TableSchema.fromBean(Customer.class);
A TableSchema
dirancang untuk menjadi statis dan tidak dapat diubah. Anda biasanya dapat membuat instance pada waktu pemuatan kelas.
Metode TableSchema.fromBean()
pabrik statis mengintrospeksi kacang untuk menghasilkan pemetaan atribut kelas data (properti) ke dan dari atribut DynamoDB.
Untuk contoh bekerja dengan model data yang terdiri dari beberapa kelas data, lihat Person
kelas di Bekerja dengan atribut yang kacang, peta, daftar, dan set bagian tersebut.
Gunakan pembangun
Anda dapat melewatkan biaya introspeksi kacang jika Anda menentukan skema tabel dalam kode. Jika Anda membuat kode skema, kelas Anda tidak perlu mengikuti standar JavaBean penamaan dan juga tidak perlu dianotasi. Contoh berikut menggunakan pembangun dan setara dengan contoh Customer
kelas yang menggunakan anotasi.
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();