【发布时间】:2017-10-19 13:46:26
【问题描述】:
我刚刚开始使用 Room,虽然一切似乎都非常直观,但我目前并不真正了解我该如何处理人际关系。
因为 SQLite 是关系型数据库,所以可以指定对象之间的关系。尽管大多数 ORM 库允许实体对象相互引用,但 Room 明确禁止这样做。即使您不能使用直接关系,Room 仍然允许您定义实体之间的外键约束。(来源:https://developer.android.com/topic/libraries/architecture/room.html#no-object-references)
- 您应该如何为多对多或一对多关系建模?
- 这在实践中会是什么样子(例如 DAO + 实体)?
【问题讨论】:
-
使用 Room,而不是 POJO 建模数据库表,POJO 建模查询结果集。这类似于 Web 服务 API 客户端(例如 Retrofit、Apollo-Android),它们不对底层 Web 服务的数据库进行建模,而是对您查询的结果进行建模。因此,对于 Room,没有关系,因为查询结果没有关系。
-
所以基本上“常规查询结果”然后转换为POJO?因此在 POJO 级别上没有关系?我理解正确吗?感谢您的评论!
-
“我理解正确吗?” -- 是的,这就是我对 Room 的解释。他们在the Google I|O 2017 presentation on Room 中讨论了这一点,接近尾声。
-
再次感谢您!顺便说一句,这本书很棒 - 一定要花些时间看看!
标签: android database sqlite orm android-room