

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Differenze di blocco ottimistiche tra la versione 1 e la versione 2 dell'SDK for Java
<a name="dynamodb-migrate-optimstic-locking"></a>

Sia la V1 che la V2 implementano il blocco ottimistico con un'annotazione di attributo che contrassegna una proprietà sulla classe bean per memorizzare il numero di versione.


**Differenze nel comportamento di blocco ottimistico**  

|  | V1 | V2 | 
| --- | --- | --- | 
| Annotazione della classe Bean | @DynamoDBVersionAttribute | @DynamoDbVersionAttribute(nota che V2 usa una «b» minuscola) | 
| Salvataggio iniziale | Attributo del numero di versione impostato su 1. | Il valore iniziale per l'attributo di versione impostato con`@DynamoDbVersionAttribute(startAt = {{X}})`. Il valore predefinito è 0. | 
| Aggiorna | L'attributo del numero di versione viene incrementato di 1 se il controllo condizionale verifica che il numero di versione dell'oggetto da aggiornare corrisponda al numero nel database. | L'attributo del numero di versione viene incrementato se il controllo condizionale verifica che il numero di versione dell'oggetto da aggiornare corrisponda al numero nel database.<br />L'attributo del numero di versione incrementato dall'opzione impostata con. `incrementBy` `@DynamoDbVersionAttribute(incrementBy = {{X}})` Il valore predefinito è 1. | 
| Elimina | DynamoDBMapperaggiunge un controllo condizionale che il numero di versione dell'oggetto da eliminare corrisponda al numero di versione nel database. | V2 non aggiunge automaticamente condizioni per le operazioni di eliminazione. È necessario aggiungere manualmente le espressioni di condizione se si desidera controllare il comportamento di eliminazione.<br />Nell'esempio seguente `recordVersion` è riportato l'attributo version 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> | 
| Scrittura transazionale con controllo delle condizioni | Non è possibile utilizzare una classe bean con annotazioni @DynamoDBVersionAttribute in un metodo. addConditionCheck | È possibile utilizzare una classe bean con l'@DynamoDbVersionAttributeannotazione in un metodo addConditionCheck builder per una richiesta. transactWriteItems | 
| Disabilita | Disabilita il blocco ottimistico modificando il valore di  DynamoDBMapperConfig.SaveBehavior enumerazione da a. UPDATE CLOBBER | Non utilizzare l'annotazione. `@DynamoDbVersionAttribute` | 