【发布时间】:2015-06-03 12:26:49
【问题描述】:
我需要生成并执行一个复杂的 sql 查询,该查询将访问多个数据库以创建一些通用的report。这意味着查询与特定的DAO 对象无关。
那么我应该把执行这样一个查询并返回结果为DTO的逻辑放在哪里?如果我创建ReportDao 接口然后实现它可能会导致另一个开发人员陷入困境,因为我认为他们会期望Dao 对象与数据库中的某个表相关联。
【问题讨论】:
-
是否会在同一个查询中访问多个数据库?还是使用多个数据库的结果?
-
@EvanKnowles 是的,这将是一个
dblink查询。 -
@user3663882 请尝试再次解释
-
为什么访问多个表会违反 DAO 模式?
-
据我所知,DAO 不一定要链接到特定的域类。没有域类是孤立存在的,如果假设 DAO 只包含对一个表/域类的操作,那会令人惊讶,因为操作可能与多个域类有关,因此无论你放在哪里都会被错误地放置它。最好也将 DAO 视为与某个功能领域相关的方法的集合。如果大多数 Dao 都是围绕域对象建模的,那么将不同的命名稍微不同可能是明智之举,但 ReportDao 应该没问题...