Diferencias de bloqueo optimistas entre la versión 1 y la versión 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 optimistas entre la versión 1 y la versión 2 del SDK para Java

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

Diferencias en el comportamiento de bloqueo optimista
V1 V2
Anotación de Bean Class @DynamoDBVersionAttribute @DynamoDbVersionAttribute(tenga en cuenta que V2 usa una «b» minúscula)
Guardado inicial Atributo de número de versión establecido en 1.

El valor inicial del atributo de versión establecido con@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 comprueba 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 comprueba 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 según el conjunto de incrementBy opciones con. @DynamoDbVersionAttribute(incrementBy = X) El valor predeterminado es 1.

Eliminar DynamoDBMapperañade una comprobación condicional de que el número de versión del objeto que se va a eliminar coincide con el número de versión de la base de datos.

La versión 2 no añade automáticamente condiciones para las operaciones de eliminación. Debe añadir las expresiones de condición manualmente si quiere controlar el comportamiento de eliminación.

En el siguiente ejemplo, recordVersion se muestra 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 verificación de estado No se puede utilizar una clase de bean anotada @DynamoDBVersionAttribute en un addConditionCheck método. Puedes usar una clase bean con la @DynamoDbVersionAttribute anotación en un método addConditionCheck generador para una transactWriteItems solicitud.
Deshabilitado Deshabilite el bloqueo optimista cambiando el valor de la DynamoDBMapperConfig.SaveBehavior enumeración de aUPDATE. CLOBBER

No utilice la @DynamoDbVersionAttribute anotación.