Java 1.x: D ynamoDBMapper - Amazon-DynamoDB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Java 1.x: D ynamoDBMapper

Anmerkung

SDKFür Java gibt es zwei Versionen: 1.x und 2.x. Die end-of-support für 1.x wurde am 12. Januar 2024 angekündigt. Es wird und end-of-support ist am 31. Dezember 2025 fällig. Für Neuentwicklungen empfehlen wir dringend, 2.x zu verwenden.

Die AWS SDK for Java stellt eine DynamoDBMapper Klasse bereit, mit der Sie Ihre clientseitigen Klassen Amazon DynamoDB-Tabellen zuordnen können. Um DynamoDBMapper zu verwenden, definieren Sie die Beziehung zwischen Elementen in einer DynamoDB-Tabelle und ihren entsprechenden Objekt-Instances im Code. Mit der DynamoDBMapper Klasse können Sie verschiedene Erstellungs-, Lese-, Aktualisierungs- und Löschvorgänge (CRUD) für Elemente ausführen sowie Abfragen und Scans für Tabellen ausführen.

Anmerkung

Die DynamoDBMapper-Klasse erlaubt kein Erstellen, Aktualisieren oder Löschen von Tabellen. Um diese Aufgaben auszuführen, verwenden Sie stattdessen die Low-Level-Schnittstelle SDK für Java. Weitere Informationen finden Sie unter Arbeiten mit DynamoDB-Tabellen in Java.

Die SDK für Java bietet eine Reihe von Annotationstypen, sodass Sie Ihre Klassen Tabellen zuordnen können. Betrachten Sie beispielsweise eine ProductCatalog-Tabelle, die Id als Partitionsschlüssel verwendet.

ProductCatalog(Id, ...)

Sie können der ProductCatalog-Tabelle eine Klasse in Ihrer Client-Anwendung zuweisen wie im folgenden Java-Code gezeigt. Dieser Code definiert ein einfaches altes Java-Objekt mit dem Namen (POJO)CatalogItem, das Anmerkungen verwendet, um Objektfelder DynamoDB-Attributnamen zuzuordnen.

Beispiel
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; } }

Im vorherigen Code weist die Anmerkung @DynamoDBTable die Klasse CatalogItem der Tabelle ProductCatalog zu. Sie können einzelne Klassen-Instances als Elemente in der Tabelle speichern. Die Anmerkung @DynamoDBHashKey weist die Eigenschaft Id dem Primärschlüssel zu.

Standardmäßig sind die Klasseneigenschaften denselben Attributnamen in der Tabelle zugeordnet. Die Eigenschaften Title und ISBN sind den gleichen Attributnamen in der Tabelle zugeordnet.

Die @DynamoDBAttribute-Anmerkung ist optional, wenn der Name des DynamoDB-Attributs dem Namen der in der Klasse angegebenen Eigenschaft entspricht. Wenn sich die Namen unterscheiden, verwenden Sie diese Anmerkung mit dem Parameter attributeName, um anzugeben, mit welchem DynamoDB-Attribut diese Eigenschaft übereinstimmt.

Im vorangegangenen Beispiel wird die @DynamoDBAttribute-Anmerkung jeder Eigenschaft hinzugefügt, um sicherzustellen, dass Eigenschaftsnamen genau den Tabellen entsprechen, die in Erstellen von Tabellen und Laden von Daten für Codebeispiele in DynamoDB erstellt wurden und um die Attributnamen, die in anderen Codebeispielen in diesem Handbuch verwendet werden, einzuhalten.

Ihre Klassendefinition kann Eigenschaften besitzen, die keinen Attributen in der Tabelle zugeordnet sind. Sie erkennen diese Eigenschaften, indem Sie die @DynamoDBIgnore-Anmerkung hinzufügen. Im vorangegangenen Beispiel ist die SomeProp-Eigenschaft mit der @DynamoDBIgnore-Anmerkung gekennzeichnet. Wenn Sie eine CatalogItem-Instance in die Tabelle hochladen, enthält Ihre DynamoDBMapper-Instance die Eigenschaft SomeProp nicht. Darüber hinaus gibt der Mapper dieses Attribut nicht zurück, wenn Sie ein Element aus der Tabelle abrufen.

Nachdem Sie die Mappingklasse definierthaben, können Sie DynamoDBMapper-Methoden verwenden, um eine Instance dieser Klasse zu einem entsprechenden Element in der Tabelle Catalog zu schreiben. Das folgende Codebeispiel zeigt diese Technik.

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);

Im folgenden Codebeispiel wird gezeigt, wie Sie das Element abrufen und auf einige seiner Attribute zugreifen.

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 ermöglicht ein intuitives und natürliches Arbeiten mit DynamoDB-Daten in Java. Er bietet auch mehrere integrierte Funktionen, wie optimistisches Sperren, ACID Transaktionen, automatisch generierte Partitionsschlüssel- und Sortierschlüsselwerte sowie Objektversionierung.