

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Diferencias de bloqueo positivo entre la versión 1 y la 2 del SDK para Java
<a name="dynamodb-migrate-optimstic-locking"></a>

Tanto la V1 como la V2 implementan bloqueo positivo con una anotación de atributo que marca una propiedad en la clase bean para almacenar el número de versión.


**Diferencias en el comportamiento de bloqueo positivo**  

|  | V1 | V2 | 
| --- | --- | --- | 
| Anotación de clase bean | @DynamoDBVersionAttribute | @DynamoDbVersionAttribute (tenga en cuenta que la V2 usa una “b” minúscula) | 
| Guardado inicial | Atributo de número de versión establecido en 1. |  Valor inicial del atributo de versión establecido en `@DynamoDbVersionAttribute(startAt = X)`. El valor predeterminado es 0.  | 
| Actualización | El atributo de número de versión se incrementa en 1 si la comprobación condicional verifica que el número de versión del objeto que se está actualizando coincide con el número de la base de datos. |  El atributo de número de versión se incrementa si la comprobación condicional verifica que el número de versión del objeto que se está actualizando coincide con el número de la base de datos. El atributo de número de versión se incrementa mediante la opción `incrementBy` establecida en `@DynamoDbVersionAttribute(incrementBy = X)`. El valor predeterminado es 1.  | 
| Eliminar | DynamoDBMapper añade una comprobación condicional de que el número de versión del objeto que se está eliminando coincide con el número de versión de la base de datos. |  La V2 no añade automáticamente condiciones para las operaciones de eliminación. Debe añadir expresiones de condición manualmente si desea controlar el comportamiento de eliminación. En el siguiente ejemplo, `recordVersion` es el atributo de versión del 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>  | 
| Escritura transaccional con comprobación de condición | No se puede utilizar una clase de bean que esté anotada con @DynamoDBVersionAttribute en un método addConditionCheck. | Puede utilizar una clase de bean con la anotación @DynamoDbVersionAttribute en un método de compilador addConditionCheck para una solicitud transactWriteItems. | 
| Deshabilitado | Para deshabilitar el bloqueo positivo, cambie el valor de enumeración  DynamoDBMapperConfig.SaveBehavior de UPDATE a CLOBBER. |  No utilice la anotación `@DynamoDbVersionAttribute`.  | 