Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Buat tabel DynamoDB jika diperlukan
Setelah Anda membuat DynamoDbTable
instance, gunakan untuk melakukan pembuatan tabel satu kali di DynamoDB.
Buat kode contoh tabel
Contoh berikut membuat tabel DynamoDB berdasarkan Customer
kelas data.
Contoh ini membuat tabel DynamoDB dengan Customer
nama —identik dengan nama kelas—tetapi nama tabel bisa menjadi sesuatu yang lain. Apa pun nama Anda tabel, Anda harus menggunakan nama ini dalam aplikasi tambahan untuk bekerja dengan tabel. Berikan nama ini ke table()
metode kapan pun Anda membuat DynamoDbTable
objek lain agar dapat bekerja dengan tabel DynamoDB yang mendasarinya.
Parameter lambda Javabuilder
,, diteruskan ke createTable
metode memungkinkan Anda menyesuaikan tabel
customerTable.createTable();
Saat pengaturan default digunakan, nilai untuk throughput yang disediakan tidak disetel. Sebagai gantinya, mode penagihan untuk tabel diatur ke sesuai permintaan.
Contoh ini juga menggunakan DynamoDbWaiter
sebelum mencoba mencetak nama tabel yang diterima dalam respons. Pembuatan meja membutuhkan waktu. Oleh karena itu, menggunakan pelayan berarti Anda tidak perlu menulis logika yang melakukan polling layanan DynamoDB untuk melihat apakah tabel ada sebelum menggunakan tabel.
import com.example.dynamodb.Customer; import software.amazon.awssdk.core.internal.waiters.ResponseOrException; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbTable; import software.amazon.awssdk.enhanced.dynamodb.TableSchema; import software.amazon.awssdk.services.dynamodb.model.DescribeTableResponse; import software.amazon.awssdk.services.dynamodb.waiters.DynamoDbWaiter;
Kode
public static void createCustomerTable(DynamoDbTable<Customer> customerTable, DynamoDbClient standardClient) { // Create the DynamoDB table using the 'customerTable' DynamoDbTable instance. customerTable.createTable(builder -> builder .provisionedThroughput(b -> b .readCapacityUnits(10L) .writeCapacityUnits(10L) .build()) ); // The DynamoDbClient instance (named 'standardClient') passed to the builder for the DynamoDbWaiter is the same instance // that was passed to the builder of the DynamoDbEnhancedClient instance that we created previously. // By using the same instance, it ensures that the same Region that was configured on the standard DynamoDbClient // instance is used for other service clients that accept a DynamoDbClient during construction. try (DynamoDbWaiter waiter = DynamoDbWaiter.builder().client(standardClient).build()) { // DynamoDbWaiter is Autocloseable ResponseOrException<DescribeTableResponse> response = waiter .waitUntilTableExists(builder -> builder.tableName("Customer").build()) .matched(); DescribeTableResponse tableDescription = response.response().orElseThrow( () -> new RuntimeException("Customer table was not created.")); // The actual error can be inspected in response.exception() logger.info("Customer table was created."); } }
catatan
Nama atribut tabel DynamoDB dimulai dengan huruf kecil ketika tabel dihasilkan dari kelas data. Jika Anda ingin nama atribut tabel dimulai dengan huruf besar, gunakan @DynamoDbAttribute(NAME) anotasi dan berikan nama yang Anda inginkan sebagai parameter.