Ändern Sie das Aktualisierungsverhalten von Attributen - AWS SDK for Java 2.x

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.

Ändern Sie das Aktualisierungsverhalten von Attributen

Sie können das Aktualisierungsverhalten einzelner Attribute anpassen, wenn Sie einen Aktualisierungsvorgang durchführen. Einige Beispiele für Aktualisierungsvorgänge im DynamoDB Enhanced Client API sind updateItem() und transactWriteItems().

Stellen Sie sich zum Beispiel vor, Sie möchten einen am erstellten Zeitstempel in Ihrem Datensatz speichern. Sie möchten jedoch, dass sein Wert nur geschrieben wird, wenn für das Attribut noch kein Wert in der Datenbank vorhanden ist. In diesem Fall verwenden Sie das WRITE_IF_NOT_EXISTS Aktualisierungsverhalten.

Das folgende Beispiel zeigt die Anmerkung, die dem createdOn Attribut das Verhalten hinzufügt.

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

Sie können dasselbe Aktualisierungsverhalten deklarieren, wenn Sie ein statisches Tabellenschema erstellen, wie im folgenden Beispiel nach Kommentarzeile 1 gezeigt.

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