在我的应用程序中,我需要创建一个在多个表上运行并从所有表中返回信息的复杂查询。
如何在这种情况下使用DAO模式?
当你有一个CRO的DAO时,它非常简单但是当你必须处理复杂的查询时,它会让人感到困惑。
我是否创建了一个对象来表示所有表的设置信息以及这个特定业务操作的DAO?
或者我应该为每个表都有一个DAO并在每个返回一个对象的DAO上分隔这个查询,最后我会有很多表示该复杂查询的对象吗?
还是有另一种选择?
DAO类应该与我的数据库中的表或业务类直接链接(表示)?
提前致谢!
答案 0 :(得分:3)
在说出哪种模式有用之前,您必须权衡以下因素。 例如:
考虑到这些因素,如果存在性能要求并且需要对此对象执行CRUD,则可以为此对象选择单个DAO。 并且,如果它的只读和性能不是主要约束,则可以从多个DAO构造此对象。
答案 1 :(得分:0)
您可以解释一下您的业务对象是什么以及它们之间的关系......
但就设计而言,一个常见的选择是为您想要CRUD的每个表创建和映射一个类。这些类将具有与其各自表中的列匹配的属性。
您是否也为每个表创建DAO取决于您,但您也可以(可能取决于您的实现语言)创建一个实现CRUD方法的通用DAO。
考虑到更复杂的实体关系的另一种设计是创建视图&存储过程,并映射到那些。这将使您能够创建一个没有用特定表格清晰表示的对象。这种方法有一些优点(例如,您可以更好地将数据库的设计封装在远离应用程序的位置),但它也有缺点(将业务逻辑移入数据库是您可能不需要的)。