3

在我的应用程序中,我需要创建一个在多个表上运行并从所有表中返回信息的复杂查询。

在这种情况下我如何使用 DAO 模式?

当你有一个用于 CRUD 的 DAO 时,它真的很简单,但是当你必须处理复杂的查询时,它就会令人困惑。

我是否为这个特定的业务操作创建了一个表示所有表的集合信息和 DAO 的对象?

或者我应该为每个表都有一个 DAO,并在每个返回一个对象的 DAO 上分离这个查询,最后我会有很多代表那个复杂查询的对象?

还是有另一种选择?

DAO 类应该与我的数据库中的表或业务类直接链接(表示)?

提前致谢!

4

2 回答 2

4

您必须权衡以下因素,然后才能说出哪种模式有用。例如:

  1. 将访问多少张表,性能有多重要?
  2. 该对象是只读的还是需要更新?

考虑到这些因素,如果有性能要求并且需要对该对象执行 CRUD,您可以为该对象选择单个 DAO。而且,如果它的只读和性能不是主要约束,您可以从多个 DAO 构造这个对象。

于 2013-03-13T02:11:29.613 回答
0

您可以多解释一下您的业务对象是什么以及它们的关系是什么......

但就设计而言,一个常见的选择是为每个要从中进行 CRUD 的表创建和映射一个类。这些类将具有与其各自表中的列匹配的属性。

是否还为每个表创建 DAO 取决于您,但您也可以(可能取决于您的实现语言)创建实现 CRUD 方法的单个通用 DAO。

另一种考虑更复杂实体关系的设计是创建视图和存储过程,并映射到它们。这将使您能够创建一个没有用特定表以 1-1 清晰表示的对象。这种方法有一些优点(例如,您可以更好地将数据库设计封装在远离应用程序的地方),但它也可能有缺点(您可能不希望将业务逻辑移动到数据库中)。

于 2013-03-12T14:44:55.640 回答