【发布时间】:2019-05-02 14:38:59
【问题描述】:
我开始使用 DynamoDB,并在 DynamoDBMapper 上看到了这条指令 http://aws.amazon.com/articles/0802321832592496
假设我有一个用户 POJO,DynamoDB 注释添加如下:
@DynamoDBTable(tableName = "users")
public class User {
private Integer id;
private Set<String> friends;
private String status;
@DynamoDBHashKey
public Integer getId() { return id; }
public void setId(Integer id) { this.id = id; }
@DynamoDBAttribute
public Set<String> getFriends() { return friends; }
public void setFriends(Set<String> friends) { this.friends = friends; }
@DynamoDBAttribute
public String getStatus() { return status; }
public void setStatus(String status) { this.status = status; }
}
由于 POJO 最有可能用于在典型应用程序中跨层传输数据,例如从持久层到 API 层......这听起来像是一个坏主意,将其与特定的数据库技术联系起来。
在关系领域,可以使用与数据库无关的 Java Persistence API 注释。但对于 DynamoDB,情况并非如此。如果将来更改数据库,我们将需要修改 POJO 类。听起来不是一个好习惯。
那么应该使用 DynamoDBMapper,还是应该只使用较低级别的 API?
【问题讨论】:
标签: java amazon-dynamodb