

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 en el tratamiento de cadenas entre la versión 1 y la 2 del SDK para Java
<a name="dynamodb-migration-string-handling"></a>

La V1 y la V2 tratan las cadenas vacías de forma diferente al enviar datos a DynamoDB:
+ **V1**: convierte las cadenas vacías en valores nulos antes de enviarlas a DynamoDB (lo que no produce ningún atributo)
+ **V2**: envía cadenas vacías como valores reales de cadenas vacías a DynamoDB

**importante**  
Tras migrar a la V2, si no desea almacenar cadenas vacías en DynamoDB, debe implementar convertidores personalizados. Sin convertidores personalizados, la V2 almacena cadenas vacías como atributos de cadenas vacías reales en los elementos de DynamoDB, lo que difiere del comportamiento de la V1, que omite estos atributos por completo.

**Example conversor personalizado para la V2 que convierte un atributo de cadena vacía en 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;
    }
}
```

