

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
<a name="dynamodb-migrate-optimstic-locking"></a>

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.  | 
| Delete | 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. <pre>// 1. Read the item and get its current version.<br />Customer item = customerTable.getItem(Key.builder().partitionValue("someId").build());<br />AttributeValue currentVersion = item.getRecordVersion();<br /><br />// 2. Create conditional delete with the `currentVersion` value.<br />DeleteItemEnhancedRequest deleteItemRequest =<br />    DeleteItemEnhancedRequest.builder()<br />       .key(KEY)<br />       .conditionExpression(Expression.builder()<br />           .expression("recordVersion = :current_version_value")<br />           .putExpressionValue(":current_version_value", currentVersion)<br />           .build()).build();<br /><br />customerTable.deleteItem(deleteItemRequest);</pre>  | 
| 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`.  | 