从多个表中检索数据时java中的最佳设计原则

时间:2010-12-25 20:12:02

标签: java sql oop design-patterns

考虑以下情况。我在资源规划项目中有3个表(使用mysql创建)

  1. raw_materials(存储所有原材料的详细信息)

  2. procurement_orders(存储有关发送给供应商的请求的所有详细信息的详细信息,以便向我们发送报价。此表引用raw_materials表。)

  3. 报价(包含供应商向我们发送的所有报价的详细信息。此表引用了procurement_orders表。)

  4. 我使用java为每个人创建了dbManagers,专门用于存储,检索和删除各个表中的数据。

    我的问题是,如果我想要检索需要从其他表中获取数据的数据,那么最好的方法是什么。例如:我想要报价低于x的所有raw_materials。那么根据我有两种方式

    1. 我在dbManager for rawMaterials中写它。这种技术的缺陷是它试图直接从其域中访问数据。
    2. 在raw_Materials的dbManager中创建其他dbManagers的实例。这里的缺陷是迭代会很大。如果有300个原材料,我将不得不调用procurement_request的dbManager方法300次。如果它返回多个值,我们将再次调用dbMnager的quatations很多没有。时间(其中许多将是不必要的)影响性能。
    3. 我的问题是,在没有达到性能的情况下,以适当的方式设计它的最佳方法是什么。

1 个答案:

答案 0 :(得分:3)

这是一个比可以快速处理的问题更大的问题,但是将java类与表对齐并不一定是一种好方法,正因为如你所说,有些事情自然涉及复杂关系中的多个表。

我建议先看看Martin Fowler的书Patterns of Enterprise Application Architecture

Patterns of Enterprise Application Architecture

本书的website还有一些关于模式的注释。

您的用法几乎与Table Data Gateway类似。遵循这种模式,在每个dbManager类中都有方法从关联表中检索数据但是将另一个表作为where子句的一部分进行处理是完全合理的。

您可能还想将Object-relational mapping视为由Hibernate实施。