假设我有以下课程:
class Example {
List<ObjectA> objectsOfA;
List<ObjectB> objectsOfB;
List<ObjectC> objectsOfC;
....
}
我通常会有这些表格:
Example
(Id,其他属性)ObjectA
(某些属性,ExampleId)ObjectB
(某些属性,ExampleId)ObjectC
(某些属性,ExampleId)如果我想恢复Example
- 对象,我想我有两个选择:
Example
以及针对ObjectA
,ObjectB
,ObjectC
列表的单个请求的每个示例。如果Example
- 条目的数量很少,则option2可能是最佳的。但是对于Example
中的每个条目,我需要做x个更多的请求,其中x是我班级中的表数。
否则,在单个连接中包含所有内容需要我自己重新组织所有数据 - 创建散列图,迭代数据和内容,这通常是代码中的大量工作。
我也可以使用选项2来延迟加载。
我还有其他选择吗?我错过了什么? (当然我知道ORM,但我决定不在Android上使用它们)
答案 0 :(得分:1)
如果我理解正确,那么问题是,从主表和相关表中加载数据有哪些方法更好:
除非你的带宽非常受限制, 我说选项1很简单,我会选择。 让数据库进行连接变得更容易,而在Java中只是将记录映射到对象。
如果使用数据库保存带宽很重要, 然后选项2更好, 因为每一条数据只会被提取一次而不会重复, 因为选项中的JOIN结果本质上是非规范化数据。
无论如何,我建议遵循Occam's razor:最简单的解决方案往往是最好的。