Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Java 1.x: D ynamoDBMapper
catatan
SDKUntuk Java memiliki dua versi: 1.x dan 2.x. end-of-supportUntuk 1.x diumumkan
AWS SDK for Java Ini menyediakan DynamoDBMapper
kelas, memungkinkan Anda untuk memetakan kelas sisi klien Anda ke tabel Amazon DynamoDB. Untuk menggunakan DynamoDBMapper
, tentukan hubungan antara item dalam tabel DynamoDB dan instans objek yang sesuai dalam kode Anda. DynamoDBMapper
Kelas ini memungkinkan Anda untuk melakukan berbagai operasi create, read, update, dan delete (CRUD) pada item, dan menjalankan query dan scan terhadap tabel.
Topik
catatan
Kelas DynamoDBMapper
tidak memungkinkan Anda membuat, memperbarui, atau menghapus tabel. Untuk melakukan tugas-tugas tersebut, gunakan antarmuka Java tingkat rendah SDK sebagai gantinya.
The SDK for Java menyediakan satu set jenis anotasi sehingga Anda dapat memetakan kelas Anda ke tabel. Misalnya, pertimbangkan tabel ProductCatalog
yang memiliki Id
sebagai kunci partisi.
ProductCatalog(Id, ...)
Anda dapat memetakan kelas di aplikasi klien ke tabel ProductCatalog
seperti yang ditunjukkan dalam kode Java berikut. Kode ini mendefinisikan objek Java lama biasa (POJO) bernamaCatalogItem
, yang menggunakan anotasi untuk memetakan bidang objek ke nama atribut DynamoDB.
contoh
package com.amazonaws.codesamples; import java.util.Set; import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBAttribute; import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBHashKey; import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBIgnore; import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTable; @DynamoDBTable(tableName="ProductCatalog") public class CatalogItem { private Integer id; private String title; private String ISBN; private Set<String> bookAuthors; private String someProp; @DynamoDBHashKey(attributeName="Id") public Integer getId() { return id; } public void setId(Integer id) {this.id = id; } @DynamoDBAttribute(attributeName="Title") public String getTitle() {return title; } public void setTitle(String title) { this.title = title; } @DynamoDBAttribute(attributeName="ISBN") public String getISBN() { return ISBN; } public void setISBN(String ISBN) { this.ISBN = ISBN; } @DynamoDBAttribute(attributeName="Authors") public Set<String> getBookAuthors() { return bookAuthors; } public void setBookAuthors(Set<String> bookAuthors) { this.bookAuthors = bookAuthors; } @DynamoDBIgnore public String getSomeProp() { return someProp; } public void setSomeProp(String someProp) { this.someProp = someProp; } }
Dalam kode sebelumnya, anotasi @DynamoDBTable
memetakan kelas CatalogItem
ke tabel ProductCatalog
. Anda dapat menyimpan masing-masing instans kelas sebagai item dalam tabel. Dalam definisi kelas, anotasi @DynamoDBHashKey
memetakan properti Id
ke kunci primer.
Secara default, properti kelas memetakan atribut nama yang sama dalam tabel. Properti Title
dan ISBN
memetakan atribut nama yang sama di tabel.
Anotasi @DynamoDBAttribute
bersifat opsional saat nama atribut DynamoDB cocok dengan nama properti yang dinyatakan di kelas. Jika namanya berbeda, gunakan anotasi ini dengan parameter attributeName
untuk menentukan atribut DynamoDB yang sesuai dengan properti ini.
Dalam contoh sebelumnya, @DynamoDBAttribute
anotasi ditambahkan ke setiap properti untuk memastikan bahwa nama properti cocok persis dengan tabel yang dibuat pada langkah sebelumnya, dan agar konsisten dengan nama atribut yang digunakan dalam contoh kode lain dalam panduan ini.
Definisi kelas Anda dapat memiliki properti yang tidak dipetakan ke setiap atribut dalam tabel. Anda mengidentifikasi properti ini dengan menambahkan anotasi @DynamoDBIgnore
. Dalam contoh sebelumnya, properti SomeProp
ditandai dengan anotasi @DynamoDBIgnore
. Saat Anda mengunggah instans CatalogItem
ke tabel, instans DynamoDBMapper
tidak menyertakan properti SomeProp
. Selain itu, pemeta tidak mengembalikan atribut ini ketika Anda mengambil item dari tabel.
Setelah menentukan kelas pemetaan, Anda dapat menggunakan metode DynamoDBMapper
untuk menulis instans kelas tersebut untuk item yang sesuai dalam tabel Catalog
. Contoh kode berikut mendemonstrasikan teknik ini.
AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard().build(); DynamoDBMapper mapper = new DynamoDBMapper(client); CatalogItem item = new CatalogItem(); item.setId(102); item.setTitle("Book 102 Title"); item.setISBN("222-2222222222"); item.setBookAuthors(new HashSet<String>(Arrays.asList("Author 1", "Author 2"))); item.setSomeProp("Test"); mapper.save(item);
Contoh kode berikut menunjukkan cara mengambil item dan mengakses beberapa atributnya.
CatalogItem partitionKey = new CatalogItem(); partitionKey.setId(102); DynamoDBQueryExpression<CatalogItem> queryExpression = new DynamoDBQueryExpression<CatalogItem>() .withHashKeyValues(partitionKey); List<CatalogItem> itemList = mapper.query(CatalogItem.class, queryExpression); for (int i = 0; i < itemList.size(); i++) { System.out.println(itemList.get(i).getTitle()); System.out.println(itemList.get(i).getBookAuthors()); }
DynamoDBMapper
menawarkan cara natural yang intuitif untuk menggunakan data DynamoDB dalam Java. Ini juga menyediakan beberapa fitur bawaan, seperti penguncian optimis, ACID transaksi, kunci partisi yang dibuat secara otomatis dan nilai kunci sortir, dan versi objek.