

# Definições de configuração opcionais para DynamoDBMapper
<a name="DynamoDBMapper.OptionalConfig"></a>

Quando você cria uma instância de `DynamoDBMapper`, ela tem certos comportamentos padrão que podem ser substituídos com o uso da classe `DynamoDBMapperConfig`. 

O seguinte trecho de código cria um `DynamoDBMapper` com configurações personalizadas:

```
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 obter mais informações, 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) na [Referência da API do AWS SDK para Java](https://docs.aws.amazon.com/sdk-for-java/latest/reference/).

Como alternativa, você pode usar os seguintes argumentos para uma instância de `DynamoDBMapperConfig`:
+ Um valor de enumeração `DynamoDBMapperConfig.ConsistentReads`:
  + `EVENTUAL`: a instância de mapeador usa uma solicitação de leitura eventualmente consistente.
  + `CONSISTENT`: a instância do mapeador usa uma solicitação de leitura fortemente consistente. É possível usar essa configuração opcional com operações `load`, `query` ou `scan`. Leituras altamente consistentes têm implicações sobre a performance e a cobrança. Consulte a [página de detalhes do produto](https://aws.amazon.com/dynamodb) do DynamoDB para obter mais informações.

  Se você não especificar uma configuração de consistência de leitura para sua instância de mapeador, o padrão será `EVENTUAL`.
**nota**  
Esse valor é aplicado em operações `query`, `querypage`, `load` e `batch load` do DynamoDBMapper.
+ Um valor de enumeração `DynamoDBMapperConfig.PaginationLoadingStrategy`: controla como a instância de mapeador processa uma lista paginada de dados, como os resultados de um `query` ou `scan`:
  + `LAZY_LOADING`: a instância do mapeador carrega dados quando possível e mantém todos os resultados carregados na memória.
  + `EAGER_LOADING`: a instância de mapeador carrega os dados assim que a lista é inicializada.
  + `ITERATION_ONLY`: você só pode usar um iterador para ler da lista. Durante a iteração, a lista limpará todos os resultados anteriores antes de carregar a próxima página e, portanto, ela manterá no máximo uma página dos resultados carregados na memória. Isso também significa que a lista só pode ser iterada uma vez. Essa estratégia é recomendada ao lidar com itens grandes, a fim de reduzir a sobrecarga de memória.

  Se você não especificar uma estratégia de carregamento de paginação para a sua instância de mapeador, o padrão será `LAZY_LOADING`.
+ Um valor de enumeração `DynamoDBMapperConfig.SaveBehavior`: especifica como a instância de mapeador deve lidar com atributos durante operações de salvamento:
  + `UPDATE`: durante uma operação de gravação, todos os atributos modelados são atualizados, enquanto os atributos não modelados não são afetados. Tipos de números primitivos (byte, int, long) são definidos como 0. Tipos de objetos são definidos como nulos. 
  + `CLOBBER`: limpa e substitui todos os atributos, incluindo os não modelados, durante uma operação de gravação. Isso é feito excluindo-se o item e o recriando. Restrições de campo com versionamento também são desconsideradas.

   Se você não especificar o comportamento de salvamento para sua instância de mapeador, o padrão será `UPDATE`.
**nota**  
As operações transacionais do DynamoDBMapper não são compatíveis com a enumeração do `DynamoDBMapperConfig.SaveBehavior`. 
+ Um objeto `DynamoDBMapperConfig.TableNameOverride` instrui a instância do mapeador a ignorar o nome de tabela especificado pela anotação `DynamoDBTable` de uma classe e, em vez disso, usar um nome de tabela diferente que você fornece. Isso é útil ao particionar dados em várias tabelas no tempo de execução. 

Você pode substituir o objeto de configuração padrão para `DynamoDBMapper` por operação, conforme necessário.