Java 1.x: DynamoDBMapper - 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: DynamoDBMapper

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. Kelas DynamoDBMapper memungkinkan Anda melakukan berbagai operasi buat, baca, perbarui, dan hapus (CRUD) pada item, dan menjalankan kueri serta memindai tabel.

catatan

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

SDK untuk Java menyediakan serangkaian jenis anotasi agar Anda dapat memetakan kelas 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 menentukan plain old Java object (POJO) bernama CatalogItem, 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, transaksi ACID, nilai kunci urutan dan kunci partisi yang dibuat secara otomatis, serta objek penentuan versi.