

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 高度なマッピング機能を使用する
<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 のマップにマップしたり、[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 文字列から構築した属性を提供します。