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
(或其他更短的名称)的新方法。此方法运行单个查询连接 customer、address 和 company 表,并通过对数据库的一次访问返回结果。
如果您选择访问 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)