gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 23:48:17 27 4
gpt4 key购买 nike

假设我有以下类(class):

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

我通常会有这些表:

  • 示例(Id,其他属性)
  • ObjectA(一些属性,ExampleId)
  • ObjectB(一些属性,ExampleId)
  • ObjectC(一些属性,ExampleId)

如果我想恢复一个Example对象,我想我有两个选择:

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

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

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

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

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

最佳答案

如果我没理解错的话,你的问题是,从主表和相关表中加载数据,以下哪种方式更好:

  1. 加载主表和相关表的 JOIN
  2. 分别加载主表和相关表的数据并在Java中加入
  3. 其他

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

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

无论如何,我建议关注Occam's razor : 最简单的解决方案通常是最好的。

关于java - 如何使用 sql 数据库中的列表有效地加载对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33062281/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com