

# Ajustes de configuración opcionales para DynamoDBMapper
<a name="DynamoDBMapper.OptionalConfig"></a>

Al crear una instancia de `DynamoDBMapper`, presenta algunos comportamientos predeterminados que se pueden anular mediante la clase `DynamoDBMapperConfig`. 

En el siguiente fragmento de código se crea una clase `DynamoDBMapper` con ajustes personalizados:

```
AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard().build();

DynamoDBMapperConfig mapperConfig = DynamoDBMapperConfig.builder()
        .withSaveBehavior(DynamoDBMapperConfig.SaveBehavior.CLOBBER)
        .withConsistentReads(DynamoDBMapperConfig.ConsistentReads.CONSISTENT)
        .withTableNameOverride(null)
        .withPaginationLoadingStrategy(DynamoDBMapperConfig.PaginationLoadingStrategy.EAGER_LOADING)
    .build();

DynamoDBMapper mapper = new DynamoDBMapper(client, mapperConfig);
```

Para obtener más información, consulte [https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/dynamodbv2/datamodeling/DynamoDBMapperConfig.html](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/dynamodbv2/datamodeling/DynamoDBMapperConfig.html) en la [Referencia de la API de AWS SDK para Java](https://docs.aws.amazon.com/sdk-for-java/latest/reference/).

Puede usar los argumentos siguientes para una instancia de `DynamoDBMapperConfig`:
+ Un valor de enumeración `DynamoDBMapperConfig.ConsistentReads`:
  + `EVENTUAL`: la instancia de mapeador utiliza una solicitud de lectura consistente final.
  + `CONSISTENT`: la instancia de mapeador utiliza una solicitud de lectura de consistencia alta. Puede usar este ajuste opcional con las operaciones `load`, `query` o `scan` operations. Las lecturas de consistencia alta afectan al rendimiento y a la facturación; consulte la [página detalles del producto](https://aws.amazon.com/dynamodb) de DynamoDB para obtener más información.

  Si no especifica un ajuste de consistencia de lectura para la instancia de mapeador, el valor predeterminado es `EVENTUAL`.
**nota**  
Este valor se aplica en las operaciones `query`, `querypage`, `load`, y `batch load` de DynamoDBMapper.
+ Un valor de enumeración `DynamoDBMapperConfig.PaginationLoadingStrategy`: controla cómo la instancia de mapeador procesa una lista de datos paginados, como los resultados de una operación `query` o `scan`:
  + `LAZY_LOADING`: la instancia de mapeador carga los datos cuando es posible y conserva todos los resultados cargados en la memoria.
  + `EAGER_LOADING`: la instancia de mapeador carga los datos tan pronto como se inicializa la lista.
  + `ITERATION_ONLY`: solo se puede usar un iterador para leer datos en la lista. Durante la iteración, la lista borrará todos los resultados anteriores antes de cargar la página siguiente, para que la lista conserve como máximo una página de resultados cargados en la memoria. Por consiguiente, la lista solamente se puede recorrer en iteración una vez. Esta estrategia se recomienda para administrar elementos de gran tamaño, con el fin de reducir la sobrecarga de la memoria.

  Si no especifica una estrategia de carga de paginación para la instancia de mapeador, el valor predeterminado es `LAZY_LOADING`.
+ Un valor de enumeración `DynamoDBMapperConfig.SaveBehavior`: especifica cómo la instancia de mapeador administrará los atributos durante las operaciones de almacenamiento:
  + `UPDATE`: durante una operación de almacenamiento, se actualizan todos los atributos modelados y los atributos no modelados no sufren cambios. Los tipos numéricos primitivos (byte, int, long) se establecen en 0. Los tipos de objeto se establecen en null. 
  + `CLOBBER`: borra y sustituye los atributos, incluidos los no modelados, durante una operación de almacenamiento. Para ello, se elimina el elemento y se vuelve a crear. También se descartan las restricciones de los campos con versiones.

   Si no especifica el comportamiento al guardar para la instancia de mapeador, el valor predeterminado es `UPDATE`.
**nota**  
Las operaciones transaccionales de DynamoDBMapper no admiten la enumeración `DynamoDBMapperConfig.SaveBehavior`. 
+ Un objeto `DynamoDBMapperConfig.TableNameOverride`: indica a la instancia de mapeador que pase por alto el nombre de tabla especificado por la anotación `DynamoDBTable` de la clase y, en su lugar, use el nombre de tabla alternativo suministrado. Esto resulta útil cuando se particionan los datos en varias tablas en tiempo de ejecución. 

Puede anular el objeto de configuración predeterminado para `DynamoDBMapper` en cada operación, conforme lo necesite.