Java 1.x: D ynamoDBMapper - Amazon DynamoDB

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-support Untuk 1.x diumumkan pada 12 Januari 2024. Itu akan dan akan jatuh tempo pada 31 Desember 2025. end-of-support Untuk pengembangan baru, kami sangat menyarankan Anda menggunakan 2.x.

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. DynamoDBMapperKelas ini memungkinkan Anda untuk melakukan berbagai operasi create, read, update, dan delete (CRUD) pada item, dan menjalankan query dan scan terhadap tabel.

catatan

Kelas DynamoDBMapper tidak memungkinkan Anda membuat, memperbarui, atau menghapus tabel. Untuk melakukan tugas-tugas tersebut, gunakan antarmuka Java tingkat rendah SDK sebagai gantinya. Untuk informasi selengkapnya, lihat Bekerja dengan tabel DynamoDB di Java.

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, anotasi @DynamoDBAttribute ditambahkan ke setiap properti untuk memastikan bahwa nama properti cocok persis dengan tabel yang dibuat di Membuat tabel dan memuat data untuk contoh kode di DynamoDB, dan 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.