Modifier le comportement de mise à jour des attributs - AWS SDK for Java 2.x

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.

Modifier le comportement de mise à jour des attributs

Vous pouvez personnaliser le comportement de mise à jour des attributs individuels lorsque vous effectuez une opération de mise à jour. UpdateItem () et () sont des exemples d'opérations de mise à jour dans l'API DynamoDB Enhanced Client. transactWriteItems

Imaginons, par exemple, que vous souhaitiez enregistrer un fichier créé sur horodatage dans votre dossier. Toutefois, vous souhaitez que sa valeur ne soit écrite que s'il n'existe aucune valeur existante pour l'attribut dans la base de données. Dans ce cas, vous utilisez le comportement de WRITE_IF_NOT_EXISTS mise à jour.

L'exemple suivant montre l'annotation qui ajoute le comportement à l'createdOnattribut.

@DynamoDbBean public class Customer extends GenericRecord { private String id; private Instant createdOn; @DynamoDbPartitionKey public String getId() { return this.id; } public void setId(String id) { this.name = id; } @DynamoDbUpdateBehavior(UpdateBehavior.WRITE_IF_NOT_EXISTS) public Instant getCreatedOn() { return this.createdOn; } public void setCreatedOn(Instant createdOn) { this.createdOn = createdOn; } }

Vous pouvez déclarer le même comportement de mise à jour lorsque vous créez un schéma de table statique, comme indiqué dans l'exemple suivant après la ligne de commentaire 1.

static final TableSchema<Customer> CUSTOMER_TABLE_SCHEMA = TableSchema.builder(Customer.class) .newItemSupplier(Customer::new) .addAttribute(String.class, a -> a.name("id") .getter(Customer::getId) .setter(Customer::setId) .tags(StaticAttributeTags.primaryPartitionKey())) .addAttribute(Instant.class, a -> a.name("createdOn") .getter(Customer::getCreatedOn) .setter(Customer::setCreatedOn) // 1. Add an UpdateBehavior. .tags(StaticAttributeTags.updateBehavior(UpdateBehavior.WRITE_IF_NOT_EXISTS))) .build();