适用于 Java 的 AWS SDK 版本 1 和版本 2 之间的文档 API 差异 - AWS SDK for Java 2.x

适用于 Java 的 AWS SDK 版本 1 和版本 2 之间的文档 API 差异

文档 API 支持将 JSON 风格的文档作为 DynamoDB 表中的单个项目来处理。V1 文档 API 在 V2 中有对应的 API,但是 V2 没有像 V1 那样为文档 API 使用单独的客户端,而是在 DynamoDB 增强型客户端中整合了文档 API 功能。

在 V1 中,Item 类代表来自 DynamoDB 表的非结构化记录。在 V2 中,非结构化记录由 EnhancedDocument 类的实例表示。请注意,在 V2 中,主键在表架构中定义,在 V1 中,主键在项目本身定义。

下表比较了 V1 和 V2 中文档 API 之间的差异。

应用场景 V1 V2
Create a document client
AmazonDynamoDB client = ... //Create a client. DynamoDB documentClient = new DynamoDB(client);
// The V2 Document API uses the same DynamoDbEnhancedClient // that is used for mapping POJOs. DynamoDbClient standardClient = ... //Create a standard client. DynamoDbEnhancedClient enhancedClient = ... // Create an enhanced client.
Reference a table
Table documentTable = docClient.documentClient("Person");
DynamoDbTable<EnhancedDocument> documentTable = enhancedClient.table("Person", TableSchema.documentSchemaBuilder() .addIndexPartitionKey(TableMetadata.primaryIndexName(),"id", AttributeValueType.S) .attributeConverterProviders(AttributeConverterProvider.defaultProvider()) .build());
Work with semi-structured data
Put item
Item item = new Item() .withPrimaryKey("id", 50) .withString("firstName", "Shirley"); PutItemOutcome outcome = documentTable.putItem(item);
EnhancedDocument personDocument = EnhancedDocument.builder() .putNumber("id", 50) .putString("firstName", "Shirley") .build(); documentTable.putItem(personDocument);
Get item
GetItemOutcome outcome = documentTable.getItemOutcome( "id", 50); Item personDocFromDb = outcome.getItem(); String firstName = personDocFromDb.getString("firstName");
EnhancedDocument personDocFromDb = documentTable .getItem(Key.builder() .partitionValue(50) .build()); String firstName = personDocFromDb.getString("firstName");
Work with JSON items
Convert a JSON structure to use it with the Document API
// The 'jsonPerson' identifier is a JSON string. Item item = new Item().fromJSON(jsonPerson);
// The 'jsonPerson' identifier is a JSON string. EnhancedDocument document = EnhancedDocument.builder() .json(jsonPerson).build());
Put JSON
documentTable.putItem(item)
documentTable.putItem(document);
Read JSON
GetItemOutcome outcome = //Get item. String jsonPerson = outcome.getItem().toJSON();
String jsonPerson = documentTable.getItem(Key.builder() .partitionValue(50).build()) .fromJson();

API 参考和文档 API 指南

V1 V2
API 参考 API 参考 API 参考
文档指南 Amazon DynamoDB 开发人员指南 增强型文档 API(本指南)