本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
开始使用增强型文档 API
增强型文档 API 所需的依赖项与 DynamoDB 增强型客户端 API 所需的依赖项相同。它还需要一个 DynamoDbEnhancedClient 实例,如本主题开头所示。
由于增强型文档 API 是在Amazon SDK for Java 2.x 2.20.3 版本中发布的,因此您需要使用该版本或更高版本。
创建 DocumentTableSchema
和 DynamoDbTable
。
要使用增强型文档 API 对 DynamoDB 表调用命令,请将该表与客户端 DynamoDbTable<EnhancedDocument>
增强型客户端的 table()
方法会创建一个 DynamoDbTable<EnhancedDocument>
实例,并且需要用于 DynamoDB 表名称和 DocumentTableSchema
的参数。
DocumentTableSchemaAttributeConverterProvider.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" } ] }