Diferencias de bloqueo positivo entre la versión 1 y la 2 del SDK para Java - AWS SDK for Java 2.x

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

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.

// 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);
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.
Deshabilitar Para deshabilitar el bloqueo positivo, cambie el valor de enumeración DynamoDBMapperConfig.SaveBehavior de UPDATE a CLOBBER.

No utilice la anotación @DynamoDbVersionAttribute.