我将大量数据保存到Amazon DynamoDB中。我使用AmazonDynamoDBClient
(有时是DynamoDBMapper
)来执行这些任务。
这是一个说明该过程的例子:
@Data
@DynamoDBTable(tableName = "Results")
public class Result extends DynamoEntity {
@DynamoDBHashKey
private String hashKey;
@DynamoDBAttribute
private String period;
@DynamoDBAttribute
private String customerId;
@DynamoDBAttribute
private double actualCost;
@DynamoDBAttribute
private double estimatedCost;
@DynamoDBHashKey
public String getHashKey() {
if (hashKey == null) {
hashKey = period + "-" + customerId;
}
return hashKey;
}
}
保存记录:
private static final AmazonDynamoDB amazonDynamoDB = new AmazonDynamoDBClient();
private static final DynamoDBMapper mapper = new DynamoDBMapper(amazonDynamoDB);
mapper.save(record);
一切正常,但我只是想知道是否应该将Serializable实现到保存到DB中的所有POJO(当然,它们通过网络发送)。这是一个好习惯还是我应该避免它?
答案 0 :(得分:2)
我认为DynamoDbMapper
适用于主要数据类型,如字符串,整数,日期等开箱即用。对于复杂类型的序列化,您需要拥有自己的自定义编组器来实现DynamoDBMarshaller
并在您的类型上使用它们。如果你想使用内置JsonMarshaller
的json,它应该使用jackson,它完全不依赖于Serializable
。
使用上面提到的类型,我觉得你不需要它。