如何使用 sql 数据库中的列表有效地加载对象

How to efficiently load objects with lists from sql-databases

假设我有以下 class:

class Example {
  List<ObjectA> objectsOfA;
  List<ObjectB> objectsOfB;
  List<ObjectC> objectsOfC;    
  ....
}

我通常会有这些 table:

如果我想恢复一个 Example-object,我想我有两个选择:

  1. 将每个 table 连接在一起,产生大量条目并将其组织在哈希图中以重新组合对象
  2. 加载每个 Example 和每个示例,对 ObjectAObjectBObjectC.
  3. 的列表进行单个请求

如果 Example 项的数量很少,选项 2 可能是最好的。但是对于 Example 中的每个条目,我需要再执行 x 个请求,其中 x 是 class.

中 table 的数量

否则,将所有内容都放在一个连接中需要我自己重新组织所有数据 - 创建散列图,遍历数据和其他东西,这通常是代码中的大量工作。

我还可以使用选项 2 进行延迟加载。

我还有其他选择吗?我错过了什么? (当然我知道 ORM,但我决定不在 Android 上使用它们)

如果我理解正确,你的问题是,从主 table 和相关的 table 加载数据时,哪种方法更好:

  1. 加载主要 table 和相关 tables
  2. 的 JOIN
  3. 分别加载主table和相关table的数据,并加入Java
  4. 其他

除非您的带宽非常受限, 我会说选项 1 很简单,我会接受它。 让数据库进行连接更容易,在 Java 中只需将记录映射到对象。

如果节省数据库带宽很重要, 那么选项2更好, 因为每条数据只会被取一次,不会重复, 因为选项中的 JOIN 的结果本质上是非规范化数据。

无论如何,我建议遵循Occam's razor:最简单的解决方案往往是最好的。