Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Java 1.x : D ynamoDBMapper
Note
SDKPour Java, il existe deux versions : 1.x et 2.x. Le end-of-support for 1.x a été annoncé
AWS SDK for Java fournit une DynamoDBMapper
classe qui vous permet de mapper vos classes côté client aux tables Amazon DynamoDB. Pour utiliser DynamoDBMapper
, vous définissez la relation entre éléments d'une table DynamoDB et leurs instances d'objet correspondantes dans votre code. La DynamoDBMapper
classe vous permet d'effectuer diverses opérations de création, de lecture, de mise à jour et de suppression (CRUD) sur des éléments, ainsi que d'exécuter des requêtes et des analyses sur des tables.
Rubriques
- ynamoDBMapper Classe D
- Types de données pris en charge pour D ynamoDBMapper pour Java
- Annotations Java pour DynamoDB
- Paramètres de configuration facultatifs pour D ynamoDBMapper
- DynamoDB et verrouillage optimiste avec numéro de version
- Mappage de données arbitraires dans DynamoDB
- ynamoDBMapper Exemples D
Note
La classe DynamoDBMapper
ne vous permet pas de créer, de mettre à jour ou de supprimer des tables. Pour effectuer ces tâches, utilisez plutôt l'interface de bas niveau SDK pour Java.
SDKfor Java fournit un ensemble de types d'annotations afin que vous puissiez mapper vos classes à des tables. Par exemple, imaginons une table ProductCatalog
ayant Id
en tant que clé de partition.
ProductCatalog(Id, ...)
Vous pouvez mapper une classe de votre application client à la table ProductCatalog
, comme illustré dans le code Java suivant. Ce code définit un ancien objet Java simple (POJO) nomméCatalogItem
, qui utilise des annotations pour associer les champs d'objets aux noms d'attributs DynamoDB.
Exemple
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; } }
Dans le code précédent, l'annotation @DynamoDBTable
mappe la classe CatalogItem
à la table ProductCatalog
. Vous pouvez stocker des instances de classe individuelles en tant qu'éléments dans la table. Dans la définition de classe, l'annotation @DynamoDBHashKey
mappe l'Id
de propriété à la clé primaire.
Par défaut, les propriétés de classe mappent avec les mêmes attributs de nom dans la table. Les propriétés Title
et ISBN
mappent avec les mêmes attributs de nom dans la table.
L'annotation @DynamoDBAttribute
est facultative si le nom de l'attribut DynamoDB correspond au nom de la propriété déclarée dans la classe. Si les noms diffèrent, utilisez cette annotation avec le paramètre attributeName
pour spécifier l'attribut DynamoDB auquel cette propriété correspond.
Dans l'exemple précédent, l'@DynamoDBAttribute
annotation est ajoutée à chaque propriété pour garantir que les noms des propriétés correspondent exactement aux tables créées à l'étape précédente et pour être cohérents avec les noms d'attributs utilisés dans les autres exemples de code de ce guide.
Votre définition de classe peut avoir des propriétés qui ne mappent avec aucun attribut de la table. Vous identifiez ces propriétés en ajoutant l'annotation @DynamoDBIgnore
. Dans l'exemple précédent, la propriété SomeProp
est marquée avec l'annotation @DynamoDBIgnore
. Lorsque vous téléchargez une instance CatalogItem
vers la table, votre instance DynamoDBMapper
n'inclut pas de propriété SomeProp
. En outre, l'outil de mappage ne retourne pas cet attribut lorsque vous récupérez un élément de la table.
Une fois que vous avez défini votre classe de mappage, vous pouvez utiliser des méthodes DynamoDBMapper
pour écrire une instance de cette classe d'un élément correspondant dans la table Catalog
. L'exemple de code suivant illustre cette technique.
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);
L'exemple de code suivant montre comment récupérer l'élément et accéder à certains de ses attributs :
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
offre un moyen intuitif, naturel d'utiliser des données DynamoDB dans Java. Il fournit également plusieurs fonctionnalités intégrées, telles que le verrouillage optimiste, ACID les transactions, les valeurs des clés de partition et de tri générées automatiquement, et le versionnement des objets.