

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 nella gestione delle stringhe tra la versione 1 e la versione 2 dell'SDK for Java
<a name="dynamodb-migration-string-handling"></a>

V1 e V2 gestiscono le stringhe vuote in modo diverso quando inviano dati a DynamoDB:
+ **V1**: converte le stringhe vuote in valori nulli prima di inviarle a DynamoDB (con conseguente assenza di attributo)
+ **V2**: invia stringhe vuote come valori effettivi di stringhe vuote a DynamoDB

**Importante**  
Dopo la migrazione alla V2, se non desideri che stringhe vuote vengano archiviate in DynamoDB, devi implementare convertitori personalizzati. Senza convertitori personalizzati, V2 memorizza le stringhe vuote come attributi di stringa vuota effettivi negli elementi DynamoDB, il che differisce dal comportamento della V1 di omettere completamente questi attributi.

**Example convertitore personalizzato per V2 che converte un attributo di stringa vuoto in null**  

```
/**
 * Custom converter that maintains V1 behavior by converting empty strings to null values
 * when writing to DynamoDB, ensuring compatibility with existing data. No attribute will be saved to DynamoDB.
 */
public class NullifyEmptyStringConverter implements AttributeConverter<String> {
    @Override
    public AttributeValue transformFrom(String value) {
        if (value == null || value.isEmpty()) {
            return AttributeValue.builder().nul(true).build();
        }
        return AttributeValue.builder().s(value).build();
    }

    @Override
    public String transformTo(AttributeValue attributeValue) {
        if (attributeValue.nul()) {
            return null;
        }
        return attributeValue.s();
    }

    @Override
    public EnhancedType<String> type() {
        return EnhancedType.of(String.class);
    }

    @Override
    public AttributeValueType attributeValueType() {
        return AttributeValueType.S;
    }
}

// V2 usage:
@DynamoDbBean
public class Customer {
    private String name;

    @DynamoDbConvertedBy(NullifyEmptyStringConverter.class)
    public String getName() {
        return name;
    }
}
```

