- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经开始使用 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?
最佳答案
JPA 的目标是与数据库无关,但任何实际将真实应用程序从一个数据库迁移到另一个数据库的人都会告诉您,它并不能处理所有边缘情况。
虽然您认为 DynamoDB 注释特定于 DynamoDB 的观点是有效的,但它确实提供了一些好处,因为它使您的应用程序逻辑持久性不可知。例如,如果不使用注释,您将不得不将 DynamoDB 对象作为 Map<String, Object>
使用。整个应用程序。通过使用映射器,您可以改为使用存储在 DynamoDB 中的项目 User
对象和您的业务逻辑都可以在 User
上执行对象。
现在假设您需要切换以将您的用户存储在不同的数据库中......无论出于何种原因,MongoDB 或什至是关系数据库。是的,您必须更改 User
上的注释反对什么与你的新持久性存储需要的东西一起工作(就像你必须修改其中的一些,如果你使用 JPA 但从 MySQL 切换到 Postgres),但是你的应用程序逻辑,即业务User
上的规则和验证整个应用程序中的对象不必更改。
因此,虽然您确实必须使用 DynamoDB 注释来使用映射器,但是通过能够直接在域实体上实现应用程序逻辑所获得的好处远远超过了与持久性解决方案耦合的任何担忧,并且反射(reflect)了这些好处在我看来,JPA 比你断言的更紧密。
关于java - 使用 DynamoDBMapper 是个坏主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35837525/
我的数据库表由多行组成,其 id 是唯一的。 API(Endpoint) -> 获取 id 的行我正在传递输入数组 (id1,id2,id3,id4) Question : In DynamoDBMa
我正在尝试使用 Java API 在 DynamoDB 中创建表。 问题:它只在表中创建哈希键索引,没有其他属性。 private void createTable(DynamoDBMapper ma
在低级 API 上使用 DynamoDBMapper 是否会影响性能?我想性能开销会很小甚至微不足道,但我无法在网上找到任何这样的引用资料。 在线示例还显示了在 POJO 本身上使用的映射器注释。这是
我正在尝试将我的 Android 应用程序连接到 AWS DynamoDB,但我无法创建 DynamoDBMapper 对象并导入该库: import com.amazonaws.mobileconn
我试图根据两个不同列的组合使表中的项目保持唯一。 我有一个 instanceId 和 imageId 列(以及其他列),并且基于 Stackoverflow 上的几篇文章和 AWS Forums以下应
使用 Java DynamoDBMapper,我如何才能仅在对象不存在时保存它(基于主键)。如果确实存在,我希望抛出异常或失败,而不是更新现有条目。 最佳答案 我相信你应该能够用 DynamoDbSa
我在 Amazon 的 AWS 工具包中遇到基于 Java 的 DynamoDBMapper 问题,抛出“无法实例化类”异常错误。这是我第一次尝试使用 DBMapper,所以我不确定我是否已正确设置所
我正在使用 DynamoDBMapper,当且仅当散列键和范围键组合不存在时,我想有条件地保存。我知道有一些方法可以使用 UUID 来减少碰撞的可能性,但我想通过使用条件保存来保护自己。 我遇到了 t
我正在使用散列键查询 DynamoDB 表。表中的每条记录由哈希键和范围键唯一标识 DynamoDBMapper mapper; .... MyClass myClass = new MyClass(
我正在研究一种保存到 DynamoDB 的方法。如果表中不存在该值,我希望该方法能够保存。如果确实存在,我想应用条件更新。我正在使用 DynamoDBMapper 的保存方法。 我目前的代码成功地进行
这是我想测试的一段代码 ... DynamoDBQueryExpression queryExpression = createQueryForLatestOrders(orderId, storeI
当我尝试从 DynamoDB 表获取一组分页数据时,它可以正常工作,但前提是它要查找的数据位于表的顶部。如果它更深入(我按 user_alias 排序数据,每个别名有 100 个元素),它不会返回任何
我在 Amazon DynamoDB 中有一个员工表(即项目)。该表的属性是 {employee_id, name, manager_id} 该类在 Java 中使用以下方式表示: @DynamoDB
我刚刚开始我的第一个 DynamoDB 项目,我一直在尝试尽可能多地阅读文档。我认为我的项目的最佳可能性是在 SDK 中使用高级 DynamoDbMapper 以允许 CRUD 操作。 在 Dynam
当您想要以下条件时,是否可以使用 DynamoDB 映射器进行有条件的写入/更新:如果属性不等于 X 则写入?我想做一个有条件的写,做这样的事情: DynamoRecord record = mapp
我已经开始使用 DynamoDB 并在 DynamoDBMapper 上看到了这条指令 http://aws.amazon.com/articles/0802321832592496 假设我有一个用户
我在 Scala 中有以下 DynamoDB 项目 @DynamoDBTable(tableName = Table) class DynamoItem { private var indexId
我想从 Dynamo DB 表中获取所有记录,并将它们映射到一个 POJO 数组中; POJO 很简单并且已经注释了。 DynamoDBMapper 似乎是将执行提取以获取记录并将它们反序列化到我的
DynamoDBMapper 提供了从 Map 构建对象的方法 JavaDoc : public T marshallIntoObject(类 clazz, map 项属性, DynamoDBMapp
在用 Kotlin 编写的 AWS Lambda(即不是 Android)中使用 DynamoDBMapper,我可以使用数据类保存记录。但是,当我尝试将记录加载到数据类时,我收到“DynamoDBM
我是一名优秀的程序员,十分优秀!