One table DAO vs multiple table DAO

Posted

技术标签:

【中文标题】One table DAO vs multiple table DAO【英文标题】: 【发布时间】:2013-10-25 22:45:44 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案1】:

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

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

另一种方法可能是将这些复杂的查询方法收集到一个单独的类中,例如CustomerQueries,而不是在现有的 DAO 类中实现它们。

【讨论】:

您能否建议任何文档或博客或任何与此相关的内容。我想实现一个 DAO 而不是多个。我知道这会很复杂,但我必须使用一次。谢谢

以上是关于One table DAO vs multiple table DAO的主要内容,如果未能解决你的问题,请参考以下文章

multiple makefiles in one directory

[转]how to inserting multiple rows in one step

Oracle 多行连接成一行 convert multiple rows to one row

leetcode--Learn one iterative inorder traversal, apply it to multiple tree questions (Java Solution)

blender烘焙与unity导入(bake multiple into one)

IMPORT MULTIPLE JS