Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何有效地从sql数据库加载具有列表的对象_Java_Mysql_Sql_Relational Database - Fatal编程技术网

Java 如何有效地从sql数据库加载具有列表的对象

Java 如何有效地从sql数据库加载具有列表的对象,java,mysql,sql,relational-database,Java,Mysql,Sql,Relational Database,假设我有以下课程: class Example { List<ObjectA> objectsOfA; List<ObjectB> objectsOfB; List<ObjectC> objectsOfC; .... } 类示例{ 清单2; 清单b; 列出SOFC的目标; .... } 我通常会有以下几张桌子: 示例(Id、其他属性) ObjectA(一些属性,例如id) ObjectB(一些属性,例如id) ObjectC(一些

假设我有以下课程:

class Example {
  List<ObjectA> objectsOfA;
  List<ObjectB> objectsOfB;
  List<ObjectC> objectsOfC;    
  ....
}
类示例{
清单2;
清单b;
列出SOFC的目标;
....
}
我通常会有以下几张桌子:

  • 示例
    (Id、其他属性)
  • ObjectA
    (一些属性,例如id)
  • ObjectB
    (一些属性,例如id)
  • ObjectC
    (一些属性,例如id)
如果我想还原一个
示例
-对象,我想我有两个选项:

  • 将每个表连接在一起,产生大量条目,并将其组织在hashmaps中以重新组装对象
  • 加载每个
    示例
    ,并为每个示例对
    对象A
    对象B
    对象C
    列表执行单个请求
  • 如果
    示例
    -条目的数量较低,则选项2可能是最好的。但是对于
    示例中的每个条目
    ,我需要再执行x个请求,其中x是类中的表数

    否则,将所有内容都包含在一个连接中需要我自己重新组织所有数据——创建哈希映射、迭代数据和其他内容,这通常需要大量的代码工作

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


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

    如果我理解正确,您的问题是,以下哪种方式更适合从主表和相关表加载数据:

  • 加载主表和相关表的联接
  • 分别加载主表和相关表的数据,并用Java连接它们
  • 别的
  • 除非您的带宽非常有限, 我认为选项1很简单,我会同意。 让数据库进行连接更容易,在Java中,只需将记录映射到对象

    如果节省数据库带宽很重要, 那么选择2更好, 因为每段数据只提取一次,没有重复, 作为连接选项的结果,本质上是非规范化数据


    在任何情况下,我建议遵循以下原则:最简单的解决方案往往是最好的。

    嘿,我已经看到了你的答案,并且觉得它非常合理。我会看看是否有任何其他建议进来,并将检查您的答案是否正确,否则。现在,我倾向于使用三个查询,而不是一个或数百个。例如,每个对象一个,每个对象本身一个。将它们放在一个映射中,迭代示例,查看b和c中的哪些对象匹配,以将它们添加到列表中。你认为这种方法怎么样?这与我建议的选项2相对应。是的,我倾向于认为可能更容易和更有效地实施