

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用高级映射功能
<a name="ddb-en-client-adv-features"></a>

了解 DynamoDB 增强型客户端 API 中的高级表架构功能。

## 了解表架构类型
<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)` 是 DynamoDB 增强型客户端 API 映射功能的接口。它可以将数据对象映射到地图或从地图映射出来[AttributeValues](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/dynamodb/model/AttributeValue.html)。`TableSchema` 对象需要知道它所映射的表的结构。此结构信息存储在 [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) 对象中。

增强型客户端 API 有以下几种 `TableSchema` 实现。

### 从带注释的类生成的表架构
<a name="ddb-en-client-adv-features-schema-mapped"></a>

从带注释的类构建 `TableSchema` 的操作成本适中，因此我们建议在应用程序启动时执行一次。

 [ BeanTableSchema ](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/enhanced/dynamodb/mapper/BeanTableSchema.html)   
此实现是基于 Bean 类的属性和注释构建的。[入门部分](ddb-en-client-gs-tableschema.md#ddb-en-client-gs-tableschema-anno-bean)演示了这种方法的示例。  
如果 `BeanTableSchema` 的行为不符合您的预期，请为 `software.amazon.awssdk.enhanced.dynamodb.beans` 启用调试日志记录。

[ImmutableTableSchema](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/enhanced/dynamodb/mapper/ImmutableTableSchema.html)  
此实现基于不可变的数据类构建。[使用不可变数据类](ddb-en-client-use-immut.md)部分介绍了此方法。

### 使用生成器生成的表架构
<a name="ddb-en-client-adv-features-schema-static"></a>

以下 `TableSchema` 是使用生成器根据代码构建的。这种方法比使用带注释的数据类的方法更便宜。构建器方法避免使用注释，并且不需要 JavaBean 命名标准。

[StaticTableSchema](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticTableSchema.html)  
此实现是为可变数据类构建的。本指南的入门部分演示了如何[使用生成器生成 `StaticTableSchema`](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)  
与 `StaticTableSchema` 构建方式类似，您使用[生成器](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticImmutableTableSchema.html)生成这种类型的 `TableSchema` 实现，以用于不可变的数据类。

### 适用于无固定架构数据的表架构
<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)  
与其他 `TableSchema` 实现不同，您无需为 `DocumentTableSchema` 实例定义属性。通常，您只需指定主键和属性转换器提供程序。`EnhancedDocument` 实例将提供您根据单个元素或 JSON 字符串构建的属性。