Verwenden von Elementen in DynamoDB - AWS SDK for Java 1.x

Version AWS SDK for Java 1.x wurde am 31. Juli 2024 in den Wartungsmodus versetzt und wird end-of-supportam 31. Dezember 2025 verfügbar sein. Wir empfehlen Ihnen, auf den zu migrieren AWS SDK for Java 2.x, um weiterhin neue Funktionen, Verfügbarkeitsverbesserungen und Sicherheitsupdates zu erhalten.

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.

Verwenden von Elementen in DynamoDB

In DynamoDB ist ein Element eine Sammlung aus Attributen, von denen jedes über einen Namen und einen Wert verfügt. Ein Attributwert kann eine Skalarfunktion, eine Gruppe oder ein Dokumenttyp sein. Weitere Informationen finden Sie unterBenennungsregeln und DatentypenimAmazon DynamoDBEntwicklerhandbuch.

Abrufen (empfangen) eines Elements aus einer Tabelle

Rufen Sie die AmazonDynamoDBs angetItemMethode und übergeben Sie es eingetItemRequest-Objekt mit dem Tabellennamen und dem Primärschlüsselwert des anzufordern Elements. Sie gibt ein GetItemResult-Objekt zurück.

Mit der getItem()-Methode des zurückgegebenen GetItemResult-Objekts können Sie eine Zuordnung aus Schlüssel-(Zeichenfolgen)- und Wert-(AttributeValue)-Paaren abrufen, die mit dem Element verknüpft sind.

Importe

import com.amazonaws.AmazonServiceException; import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder; import com.amazonaws.services.dynamodbv2.model.AttributeValue; import com.amazonaws.services.dynamodbv2.model.GetItemRequest; import java.util.HashMap; import java.util.Map;

Code

HashMap<String,AttributeValue> key_to_get = new HashMap<String,AttributeValue>(); key_to_get.put("DATABASE_NAME", new AttributeValue(name)); GetItemRequest request = null; if (projection_expression != null) { request = new GetItemRequest() .withKey(key_to_get) .withTableName(table_name) .withProjectionExpression(projection_expression); } else { request = new GetItemRequest() .withKey(key_to_get) .withTableName(table_name); } final AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.defaultClient(); try { Map<String,AttributeValue> returned_item = ddb.getItem(request).getItem(); if (returned_item != null) { Set<String> keys = returned_item.keySet(); for (String key : keys) { System.out.format("%s: %s\n", key, returned_item.get(key).toString()); } } else { System.out.format("No item found with the key %s!\n", name); } } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1);

Auf GitHub finden Sie ein vollständiges Beispiel.

Hinzufügen eines neuen Elements zu einer Tabelle

Erstellen Sie eine Map mit Schlüssel-Wert-Paaren, die die Attribute des Elements darstellen. Diese müssen Werte für die Primärschlüsselfelder der Tabelle enthalten. Wenn das Element mit dem Primärschlüssel bereits vorhanden ist, werden dessen Felder durch die Anforderung aktualisiert.

Anmerkung

Wenn die angegebene Tabelle für Ihr Konto und Ihre Region nicht vorhanden ist, wird eine ResourceNotFoundException ausgelöst.

Importe

import com.amazonaws.AmazonServiceException; import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder; import com.amazonaws.services.dynamodbv2.model.AttributeValue; import com.amazonaws.services.dynamodbv2.model.ResourceNotFoundException; import java.util.ArrayList;

Code

HashMap<String,AttributeValue> item_values = new HashMap<String,AttributeValue>(); item_values.put("Name", new AttributeValue(name)); for (String[] field : extra_fields) { item_values.put(field[0], new AttributeValue(field[1])); } final AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.defaultClient(); try { ddb.putItem(table_name, item_values); } catch (ResourceNotFoundException e) { System.err.format("Error: The table \"%s\" can't be found.\n", table_name); System.err.println("Be sure that it exists and that you've typed its name correctly!"); System.exit(1); } catch (AmazonServiceException e) { System.err.println(e.getMessage()); System.exit(1);

Auf GitHub finden Sie ein vollständiges Beispiel.

Aktualisieren eines vorhandenen Elements in einer Tabelle

Sie können ein Attribut für ein Element, das bereits in einer Tabelle vorhanden ist, aktualisieren, indem Sie die AmazonDynamoDBsupdateItem-Methode, die einen Tabellennamen, Primärschlüsselwert und eine Map mit Feldern übergeben, die aktualisiert werden sollen.

Anmerkung

Wenn die angegebene Tabelle für Ihr Konto und Ihre Region oder das durch den übergebenen Primärschlüssel angegebene Element nicht vorhanden ist, wird eine ResourceNotFoundException ausgelöst.

Importe

import com.amazonaws.AmazonServiceException; import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder; import com.amazonaws.services.dynamodbv2.model.AttributeAction; import com.amazonaws.services.dynamodbv2.model.AttributeValue; import com.amazonaws.services.dynamodbv2.model.AttributeValueUpdate; import com.amazonaws.services.dynamodbv2.model.ResourceNotFoundException; import java.util.ArrayList;

Code

HashMap<String,AttributeValue> item_key = new HashMap<String,AttributeValue>(); item_key.put("Name", new AttributeValue(name)); HashMap<String,AttributeValueUpdate> updated_values = new HashMap<String,AttributeValueUpdate>(); for (String[] field : extra_fields) { updated_values.put(field[0], new AttributeValueUpdate( new AttributeValue(field[1]), AttributeAction.PUT)); } final AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.defaultClient(); try { ddb.updateItem(table_name, item_key, updated_values); } catch (ResourceNotFoundException e) { System.err.println(e.getMessage()); System.exit(1); } catch (AmazonServiceException e) { System.err.println(e.getMessage()); System.exit(1);

Auf GitHub finden Sie ein vollständiges Beispiel.

Verwenden der DynamoDBMapper-Klasse

DieAWS SDK for Javastellt ein zur VerfügungDynamoDBMapper-Klasse, mit der Sie Ihre clientseitigen Klassen zuordnen könnenAmazon DynamoDBTische. So verwenden Sie denDynamoDBMapperdefinieren Sie die Beziehung zwischen Elementen in einemDynamoDB-Tabelle und ihre entsprechenden Objekt-Instances im Code mithilfe von Anmerkungen (wie im folgenden Codebeispiel gezeigt). Die DynamoDBMapper-Klasse ermöglicht Ihnen den Zugriff auf Ihre Tabellen, das Ausführen verschiedener Create-, Read-, Update-, und Delete-Operationen (CRUD) und das Ausführen von Abfragen.

Anmerkung

Die DynamoDBMapper-Klasse erlaubt kein Erstellen, Aktualisieren oder Löschen von Tabellen.

Importe

import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder; import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBAttribute; import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBHashKey; import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper; import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTable; import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBRangeKey; import com.amazonaws.services.dynamodbv2.model.AmazonDynamoDBException;

Code

Das folgende Java-Codebeispiel zeigt, wie Sie Inhalte zumMusikTabelle unter Verwendung desDynamoDBMapper-Klasse. Nachdem der Inhalt der Tabelle hinzugefügt wurde, beachten Sie, dass ein Element mithilfe der Schlüssel Partition und Sortieren geladen wird. Anschließend wird das Element Auszeichnungen aktualisiert. Weitere Informationen zum Erstellen desMusikTabelle, sieheErstellen einer TabelleimAmazon DynamoDBEntwicklerhandbuch.

AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard().build(); MusicItems items = new MusicItems(); try{ // Add new content to the Music table items.setArtist(artist); items.setSongTitle(songTitle); items.setAlbumTitle(albumTitle); items.setAwards(Integer.parseInt(awards)); //convert to an int // Save the item DynamoDBMapper mapper = new DynamoDBMapper(client); mapper.save(items); // Load an item based on the Partition Key and Sort Key // Both values need to be passed to the mapper.load method String artistName = artist; String songQueryTitle = songTitle; // Retrieve the item MusicItems itemRetrieved = mapper.load(MusicItems.class, artistName, songQueryTitle); System.out.println("Item retrieved:"); System.out.println(itemRetrieved); // Modify the Award value itemRetrieved.setAwards(2); mapper.save(itemRetrieved); System.out.println("Item updated:"); System.out.println(itemRetrieved); System.out.print("Done"); } catch (AmazonDynamoDBException e) { e.getStackTrace(); } } @DynamoDBTable(tableName="Music") public static class MusicItems { //Set up Data Members that correspond to columns in the Music table private String artist; private String songTitle; private String albumTitle; private int awards; @DynamoDBHashKey(attributeName="Artist") public String getArtist() { return this.artist; } public void setArtist(String artist) { this.artist = artist; } @DynamoDBRangeKey(attributeName="SongTitle") public String getSongTitle() { return this.songTitle; } public void setSongTitle(String title) { this.songTitle = title; } @DynamoDBAttribute(attributeName="AlbumTitle") public String getAlbumTitle() { return this.albumTitle; } public void setAlbumTitle(String title) { this.albumTitle = title; } @DynamoDBAttribute(attributeName="Awards") public int getAwards() { return this.awards; } public void setAwards(int awards) { this.awards = awards; } }

Auf GitHub finden Sie ein vollständiges Beispiel.

Weitere Infos