Diferenças de bloqueio positivo entre a versão 1 e a versão 2 do SDK para Java - AWS SDK for Java 2.x

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Diferenças de bloqueio positivo entre a versão 1 e a versão 2 do SDK para Java

Tanto a V1 quanto a V2 implementam um bloqueio positivo com uma anotação de atributo que marca uma propriedade em sua classe de bean para armazenar o número da versão.

Diferenças no comportamento de bloqueio positivo
V1 V2
Anotação da classe de bean @DynamoDBVersionAttribute @DynamoDbVersionAttribute (observe que V2 usa um “b” minúsculo)
Salvamento inicial Atributo do número da versão definido como 1.

O valor inicial para o atributo de versão definido com @DynamoDbVersionAttribute(startAt = X). O valor padrão é 0.

Atualizar O atributo do número da versão será incrementado em 1 se a verificação condicional confirmar que o número da versão do objeto que está sendo atualizado corresponde ao número no banco de dados.

O atributo do número da versão será incrementado se a verificação condicional confirmar que o número da versão do objeto que está sendo atualizado corresponde ao número no banco de dados.

O atributo do número da versão incrementado pela opção incrementBy definida com @DynamoDbVersionAttribute(incrementBy = X). O valor padrão é 1.

Excluir DynamoDBMapper adiciona uma verificação condicional de que o número da versão do objeto que está sendo excluído corresponde ao número da versão no banco de dados.

A V2 não adiciona automaticamente condições para as operações de exclusão. Você deverá adicionar expressões condicionais manualmente se quiser controlar o comportamento de exclusão.

No exemplo a seguir, recordVersion é o atributo da versão do 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);
Gravação transacional com verificação de condição Você não pode usar uma classe de bean que esteja anotada com @DynamoDBVersionAttribute em um método addConditionCheck. Você pode usar uma classe de bean com a anotação @DynamoDbVersionAttribute em um método de compilador addConditionCheck para uma solicitação transactWriteItems.
Disable (Desabilitar) Desabilite o bloqueio positivo alterando o valor da enumeração DynamoDBMapperConfig.SaveBehavior de UPDATE para CLOBBER.

Não use a anotação @DynamoDbVersionAttribute.