每个 'container' class 一个 DAO 还是每个 table 一个 DAO?

One DAO per 'container' class or one DAO per table?

我有一个 'container' class,其字段包含在多个数据库 table 中,我使用 DAO 模式访问数据。

问题是,我应该为这个 'container' class 创建一个 DAO,还是每个 table 有一个 DAO 并合并它们的数据更好?

您应该根据应用程序的需要而不是数据库的布局来设计 DAO。从一个 DAO 开始,如果它变得太大,则以一种对您的代码有意义的方式将其重构为多个 DAO。

DAO 的全部意义在于隐藏 应用程序中的任何数据库概念(如tables)。您的应用程序应该将其视为具有一些有用方法的服务。

例如,如果您的应用程序需要一些来自用户 table 和电子邮件地址 table 的用户数据,您的应用程序代码不必协调两个 DAO - 它应该调用一个DAO 方法 getUserDetails() 和 DAO 将隐藏需要调用多个 table 的事实。

我推荐你问题中的第一个选项,但我不会将自己局限于规则 "one DAO per container class"。