在 AWS DynamoDB 中,有两个选项可用于对表执行 CRUD 操作。
DynamoDBMapper:.
com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper;
AmazonDynamoDB dbClient = AmazonDynamoDBAsyncClientBuilder.standard().withCredentials(creds)
.withRegion("us-east-1").build();
// creds is AWSCredentialsProvider
DynamoDBMapper mapper = new DynamoDBMapper(dbClient);
mapper.save(item);
Run Code Online (Sandbox Code Playgroud)
桌子: com.amazonaws.services.dynamodbv2.document.Table;。
static DynamoDB dynamoDB =new DynamoDB(dbClient);
Table table = dynamoDB.getTable("TABLE_NAME");
Item item =new Item().withPrimaryKey("","")
.withString("":, "");
table.putItem(item);
Run Code Online (Sandbox Code Playgroud)
两者似乎都执行相同的操作。
DynamoDBMapper是Table之上的一层吗?如果是的话,使用这些的区别是什么?
amazon-web-services amazon-dynamodb aws-java-sdk-2.x aws-java-sdk-dynamodb dynamodb-mapper
我有一个 DynamoDB 表,其中包含不止一种类型的逻辑实体。我的表存储“员工”和“组织”,并在两者之间创建多对多关系。
我正在努力解决如何使用 DynamoDBMapper 对实体和表进行建模。特别是在尝试编写将返回员工和组织的查询时。
在我的 Java 代码中,我首先使用两个类来表示这些实体。
员工.java
@DynamoDBTable(tableName = "workplaces")
public class Employee() {
@DynamoDBHashKey(attributeName = "pk")
public String employeeId;
@DynamoDBRangeKey(attributeName = "sk")
public String sortKey
// Other attributes specific to employees, as well as getters and setters
}
Run Code Online (Sandbox Code Playgroud)
和 Organization.java:
@DynamoDBTable(tableName = "workplaces")
public class Organization() {
@DynamoDBHashKey(attributeName = "pk")
public String organizationId;
@DynamoDBRangeKey(attributeName = "sk")
public String sortKey
// Other attributes specific to organizations, as well as getters and setters
}
Run Code Online (Sandbox Code Playgroud)
我的查询访问模式之一是“检索组织的详细信息及其所有员工”。我设计的表架构允许我在单个查询中检索所有这些项目。
我正在努力解决如何使用 DynamoDbMapper 在 …
java ×1