一个表DAO与多个表DAO

时间:2013-10-17 12:30:25

标签: oop dao consistency

我正在JSF中设计一些数据“块” 我从每个块的Java bean获取数据。 我的问题是我的块从多个表中获取数据。 例如:

描述客户个人数据的块包含:

  • 客户名称(表 客户
  • 客户姓氏(表 客户
  • 客户电话(表 客户
  • 客户地址(表 地址
  • 客户公司(表 公司
  • 工作中的客户电话(表 公司

我必须访问3个单独的表才能填充此块。而不是构建3个不同的DAO(每个表一个),每个块构建一个DAO 不是更好吗?我理解这种方式在一致性方面存在缺点,因为如果一个表将由多个DAO访问,则表的每次更改都必须应用于每个表。但根据我的具体业务逻辑,我的代码将更容易理解。这有什么其他缺点?通常建议创建可以访问许多表的DAO吗?

1 个答案:

答案 0 :(得分:5)

我对此问题的解决方案是在getCustomerWithAddressAndCompanyInfo中实现一个名为CustomerDAO(或更短的其他内容)的新方法。此方法运行单个查询,连接 customer address company 表,并通过对数据库的单次访问返回结果。

如果选择访问3个DAO,则必须在数据库上执行3个不同的查询,这可能会产生性能问题。正如你所说,这也可能导致不一致。

另一种方法可能是在单独的类(如CustomerQueries)中收集此类复杂查询方法,而不是在现有DAO类中实现它们。