Differenze di blocco ottimistiche tra la versione 1 e la versione 2 dell'SDK for Java - AWS SDK for Java 2.x

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Differenze di blocco ottimistiche tra la versione 1 e la versione 2 dell'SDK for Java

Sia la V1 che la V2 implementano il blocco ottimistico con un'annotazione di attributo che contrassegna una proprietà sulla classe bean per memorizzare il numero di versione.

Differenze nel comportamento di blocco ottimistico
V1 V2
Annotazione della classe Bean @DynamoDBVersionAttribute @DynamoDbVersionAttribute(nota che V2 usa una «b» minuscola)
Salvataggio iniziale Attributo del numero di versione impostato su 1.

Il valore iniziale per l'attributo di versione impostato con@DynamoDbVersionAttribute(startAt = X). Il valore predefinito è 0.

Aggiornamento L'attributo del numero di versione viene incrementato di 1 se il controllo condizionale verifica che il numero di versione dell'oggetto da aggiornare corrisponda al numero nel database.

L'attributo del numero di versione viene incrementato se il controllo condizionale verifica che il numero di versione dell'oggetto da aggiornare corrisponda al numero nel database.

L'attributo del numero di versione incrementato dall'opzione impostata con. incrementBy @DynamoDbVersionAttribute(incrementBy = X) Il valore predefinito è 1.

Eliminazione DynamoDBMapperaggiunge un controllo condizionale che il numero di versione dell'oggetto da eliminare corrisponda al numero di versione nel database.

V2 non aggiunge automaticamente condizioni per le operazioni di eliminazione. È necessario aggiungere manualmente le espressioni di condizione se si desidera controllare il comportamento di eliminazione.

Nell'esempio seguente recordVersion è riportato l'attributo version del 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);
Scrittura transazionale con controllo delle condizioni Non è possibile utilizzare una classe bean con annotazioni @DynamoDBVersionAttribute in un metodo. addConditionCheck È possibile utilizzare una classe bean con l'@DynamoDbVersionAttributeannotazione in un metodo addConditionCheck builder per una richiesta. transactWriteItems
Disabilita Disabilita il blocco ottimistico modificando il valore di DynamoDBMapperConfig.SaveBehavior enumerazione da a. UPDATE CLOBBER

Non utilizzare l'annotazione. @DynamoDbVersionAttribute