

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Diferenças de gerenciamento de strings entre a versão 1 e a versão 2 do SDK para Java
<a name="dynamodb-migration-string-handling"></a>

A V1 e a V2 gerenciam strings vazias de forma diferente ao enviar dados para o DynamoDB:
+ **V1**: converte strings vazias em valores nulos antes de enviar para o DynamoDB (resultando em nenhum atributo)
+ **V2**: envia strings vazias como valores reais de string vazias para o DynamoDB

**Importante**  
Depois de migrar para a V2, se você não quiser que strings vazias sejam armazenadas no DynamoDB, implemente conversores personalizados. Sem conversores personalizados, a V2 armazena strings vazias como atributos reais de string vazias nos itens do DynamoDB, o que difere do comportamento da V1 de omitir totalmente esses atributos.

**Example conversor personalizado para V2 que converte um atributo de string vazia em nulo**  

```
/**
 * 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;
    }
}
```

