实际上更好的是什么?让具有复杂查询的类负责加载实例嵌套对象?或者带有简单查询的类负责加载简单对象?
对于复杂的查询,您必须减少对数据库的影响,但课程将承担更多责任.
或简单查询,您需要更多地访问数据库.在这种情况下,每个类将负责加载一种类型的对象.
我所处的情况是加载的对象将被发送到Flex应用程序(DTO).
这里的一般经验法则是服务器往返是昂贵的(相对于典型查询需要多长时间),因此指导原则是您希望最小化它们.基本上每个一对多连接可能会使结果集倍增,因此我接近这个方法是继续加入,直到结果集太大或查询执行时间太长(通常大约1-5秒).
根据您的平台,您可能会或可能无法并行执行查询.这是您应该做的一个关键决定因素,因为如果您一次只能执行一个查询,那么分解查询的障碍要高得多.
有时值得在内存中保留一些相对恒定的数据(例如国家/地区信息)或将它们作为单独的查询进行处理,但根据我的经验,这是相当不寻常的.
更常见的是必须修复具有可怕性能的系统,这在很大程度上是由于执行单独的查询(特别是相关查询)而不是连接.
我不认为任何选择实际上更好.这取决于您的应用程序特定,体系结构,使用的DBMS和其他因素.
例如,我们在独立解决方案中使用了多个简单查询.但是,当我们将我们的产品发展为轻量级的互联网可访问解决方案时,我们发现我们的框架产生了大量的请求,并且导致网络延迟导致性能下降.因此,我们充分重新设计了使用聚合复杂查询的框架.与此同时,我们仍然维护着我们的独立解决方案,并从Oracle Light迁移到Apache Derby.我们再一次发现,一些新的复杂查询应该简化,因为Derby执行的时间太长了.
所以看看你真正的问题并适当地解决它.我认为,如果没有针对它们的强烈目标,那么简单的查询就有利于开始.