Différences de verrouillage optimistes entre la version 1 et la version 2 du SDK for Java - 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.

Différences de verrouillage optimistes entre la version 1 et la version 2 du SDK for Java

Les versions V1 et V2 implémentent un verrouillage optimiste avec une annotation d'attribut qui marque une propriété de votre classe de bean pour stocker le numéro de version.

Différences entre les comportements de verrouillage optimistes
V1 V2
Annotation de classe Bean @DynamoDBVersionAttribute @DynamoDbVersionAttribute(notez que la V2 utilise un « b » minuscule)
Sauvegarde initiale Attribut du numéro de version défini sur 1.

La valeur de départ de l'attribut de version défini avec@DynamoDbVersionAttribute(startAt = X). La valeur par défaut est 0.

Mettre à jour L'attribut du numéro de version est incrémenté de 1 si le contrôle conditionnel vérifie que le numéro de version de l'objet mis à jour correspond au numéro de la base de données.

L'attribut du numéro de version est incrémenté si le contrôle conditionnel vérifie que le numéro de version de l'objet mis à jour correspond au numéro de la base de données.

L'attribut du numéro de version incrémenté par l'incrementByoption définie avec@DynamoDbVersionAttribute(incrementBy = X). La valeur par défaut est 1.

Suppression DynamoDBMapperajoute une vérification conditionnelle pour vérifier que le numéro de version de l'objet supprimé correspond au numéro de version de la base de données.

La V2 n'ajoute pas automatiquement de conditions pour les opérations de suppression. Vous devez ajouter des expressions de condition manuellement si vous souhaitez contrôler le comportement de suppression.

Dans l'exemple suivant, recordVersion il s'agit de l'attribut version du bean.

// 1. Read the item and get its current version. Customer item = customerTable.getItem(Key.builder().partitionValue("someId").build()); AttributeValue currentVersion = item.getRecordVersion(); // 2. Create conditional delete with the `currentVersion` value. DeleteItemEnhancedRequest deleteItemRequest = DeleteItemEnhancedRequest.builder() .key(KEY) .conditionExpression(Expression.builder() .expression("recordVersion = :current_version_value") .putExpressionValue(":current_version_value", currentVersion) .build()).build(); customerTable.deleteItem(deleteItemRequest);
Rédaction transactionnelle avec vérification des conditions Vous ne pouvez pas utiliser une classe de bean annotée @DynamoDBVersionAttribute dans une addConditionCheck méthode. Vous pouvez utiliser une classe de bean avec l'@DynamoDbVersionAttributeannotation dans une addConditionCheck méthode de création pour une transactWriteItems demande.
Désactiver Désactivez le verrouillage optimiste en modifiant la valeur de l' DynamoDBMapperConfig.SaveBehaviorénumération de UPDATE àCLOBBER.

N'utilisez pas l'@DynamoDbVersionAttributeannotation.