

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á.

# Usar recursos avançados de mapeamento
<a name="ddb-en-client-adv-features"></a>

Saiba mais sobre os atributos avançados do esquema de tabelas na API do Cliente Aprimorado do DynamoDB.

## Entender os tipos de esquema de tabela
<a name="ddb-en-client-adv-features-schm-overview"></a>

`[TableSchema](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/enhanced/dynamodb/TableSchema.html)` é a interface para a funcionalidade de mapeamento da API do Cliente Aprimorado do DynamoDB. Ele pode mapear um objeto de dados de e para um mapa de [AttributeValues](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/dynamodb/model/AttributeValue.html). Um objeto `TableSchema` precisa conhecer a estrutura da tabela que está mapeando. Essas informações de estrutura são armazenadas em um objeto [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/enhanced/dynamodb/TableMetadata.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/enhanced/dynamodb/TableMetadata.html).

A API de cliente aprimorado tem várias implementações de `TableSchema`, conforme será visto a seguir. 

### Esquema de tabela gerado a partir de classes anotadas
<a name="ddb-en-client-adv-features-schema-mapped"></a>

Criar uma `TableSchema` a partir de classes anotadas é uma operação moderadamente dispendiosa, portanto, recomendamos fazer isso uma vez, na inicialização do aplicativo.

 [ BeanTableSchema ](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/enhanced/dynamodb/mapper/BeanTableSchema.html)   
Essa implementação é construída com base nos atributos e anotações de uma classe de bean. Um exemplo dessa abordagem é demonstrado na [seção Conceitos básicos](ddb-en-client-gs-tableschema.md#ddb-en-client-gs-tableschema-anno-bean).  
Se uma `BeanTableSchema` não estiver se comportando conforme o esperado, habilite o registro de depuração para `software.amazon.awssdk.enhanced.dynamodb.beans`.

[ImmutableTableSchema](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/enhanced/dynamodb/mapper/ImmutableTableSchema.html)  
Essa implementação é criada a partir de uma classe de dados imutável. Esse método é descrito na seção [Trabalhar com classes de dados imutáveis](ddb-en-client-use-immut.md).

### Esquema de tabela gerado com um construtor
<a name="ddb-en-client-adv-features-schema-static"></a>

As seguintes `TableSchema`s são criadas a partir do código usando um construtor. Essa abordagem é menos dispendiosa do que a abordagem que usa classes de dados anotadas. A abordagem do construtor evita o uso de anotações e não exige JavaBean padrões de nomenclatura.

[StaticTableSchema](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticTableSchema.html)  
Essa implementação foi criada para classes de dados mutáveis. A seção de introdução deste guia demonstrou como [gerar uma `StaticTableSchema` usando um construtor](ddb-en-client-gs-tableschema.md#ddb-en-client-gs-tableschema-builder).

[StaticImmutableTableSchema](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticImmutableTableSchema.html)  
Da mesma forma que você cria um `StaticTableSchema`, você gera uma implementação desse tipo de `TableSchema` usando um [construtor](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticImmutableTableSchema.html) para uso com classes de dados imutáveis.

### Esquema de tabela para dados sem um esquema fixo
<a name="ddb-en-client-adv-features-schema-document"></a>

[DocumentTableSchema](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/enhanced/dynamodb/document/DocumentTableSchema.html)  
Ao contrário de outras implementações de `TableSchema`, você não define atributos para uma instância `DocumentTableSchema`. Normalmente, você especifica somente chaves primárias e provedores de conversão de atributos. Uma instância `EnhancedDocument` fornece os atributos que você cria a partir de elementos individuais ou de uma cadeia de caracteres JSON.