当@DynamoDBTable注释的类仅映射其属性的子集时,Java DynamoDB是否加载整个项目吗?
示例:“产品”表,其中包含具有以下属性的项目: ID,名称,说明。我想获取几种产品的名称,而无需加载描述(这将是大量数据)。
此代码是否从DynamoDB加载描述?
@DynamoDBTable(tableName = "Product")
public class ProductName {
private UUID id;
private String name;
@DynamoDBHashKey
@DynamoDBTyped(DynamoDBAttributeType.S)
public UUID getId() { return id; }
public void setId(UUID id) { this.id = id; }
@DynamoDBAttribute
public String getName() { return name; }
public void setName(String name) { this.name = name; }
}
...
DynamoDBMapper dynamoDBMapper = ...
dynamoDBMapper.batchLoad(products); // TODO is description loaded? what is the amount of Consumed Read Capacity Units?
答案 0 :(得分:0)
作为他们的docs say:
DynamoDB根据项目大小而不是返回给应用程序的数据量来计算消耗的读取容量单位数。因此,无论您请求所有属性(默认行为)还是仅请求其中一些属性(使用投影表达式),消耗的容量单位数量都将相同。无论您是否使用过滤器表达式,该数字也将相同。
如您所见,预测不会影响所用容量单位的数量。
对于您而言,
无论如何,都将返回description
字段,因为您不需要使用DynamoDB注释对每个字段进行注释,只需注释那些是键或名称不同的字段,或需要自定义转换器。所有未注释的字段将自动从相应的DB字段中填充。