开始使用增强型文档 API - AWS SDK for Java 2.x

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

开始使用增强型文档 API

增强型文档 API 所需的依赖项与 DynamoDB 增强型客户端 API 所需的依赖项相同。它还需要一个 DynamoDbEnhancedClient 实例,如本主题开头所示。

由于增强型文档 API 是在AWS SDK for Java 2.x 2.20.3 版本中发布的,因此您需要使用该版本或更高版本。

创建 DocumentTableSchemaDynamoDbTable

要使用增强型文档 API 对 DynamoDB 表调用命令,请将该表与客户端 DynamoDbTable<EnhancedDocument> 资源对象关联。

增强型客户端的 table() 方法会创建一个 DynamoDbTable<EnhancedDocument> 实例,并且需要用于 DynamoDB 表名称和 DocumentTableSchema 的参数。

DocumentTableSchema 的生成器需要一个主索引键和一个或多个属性转换器提供程序。AttributeConverterProvider.defaultProvider() 方法为默认类型提供转换器。即使您提供了自定义属性转换器提供程序,也应指定它。您可以向生成器添加可选的二级索引键。

以下代码段显示的代码将生成一个 DynamoDB person 表的客户端表示形式,该表将存储无架构 EnhancedDocument 对象。

DynamoDbTable<EnhancedDocument> documentDynamoDbTable = enhancedClient.table("person", TableSchema.documentSchemaBuilder() // Specify the primary key attributes. .addIndexPartitionKey(TableMetadata.primaryIndexName(),"id", AttributeValueType.S) .addIndexSortKey(TableMetadata.primaryIndexName(), "lastName", AttributeValueType.S) // Specify attribute converter providers. Minimally add the default one. .attributeConverterProviders(AttributeConverterProvider.defaultProvider()) .build()); // Call documentTable.createTable() if "person" does not exist in DynamoDB. // createTable() should be called only one time.

以下显示了本部分中使用的 person 对象的 JSON 表示形式。

{ "id": 1, "firstName": "Richard", "lastName": "Roe", "age": 25, "addresses": { "home": { "zipCode": "00000", "city": "Any Town", "state": "FL", "street": "123 Any Street" }, "work": { "zipCode": "00001", "city": "Anywhere", "state": "FL", "street": "100 Main Street" } }, "hobbies": [ "Hobby 1", "Hobby 2" ], "phoneNumbers": [ { "type": "Home", "number": "555-0100" }, { "type": "Work", "number": "555-0119" } ] }