每个“容器”类一个 DAO 还是每个表一个 DAO?
Posted
技术标签:
【中文标题】每个“容器”类一个 DAO 还是每个表一个 DAO?【英文标题】:One DAO per 'container' class or one DAO per table? 【发布时间】:2015-10-26 04:56:00 【问题描述】:我有一个“容器”类,其字段包含在多个数据库表中,并且我使用 DAO 模式来访问数据。
问题是,我应该为这个“容器”类创建一个 DAO,还是每个表都有一个 DAO 并合并它们的数据更好?
【问题讨论】:
【参考方案1】:您应该根据您的应用程序需求设计您的 DAO,而不是您的数据库的布局。从一个 DAO 开始,如果它变得太大,则以对您的代码有意义的方式将其重构为多个 DAO。
DAO 的全部意义在于隐藏应用程序中的任何数据库概念(如表)。您的应用程序应该将其视为具有一些有用方法的服务。
例如,如果您的应用程序需要一些来自 Users 表和 EmailAddresses 表的用户数据,您的应用程序代码不应该协调两个 DAO - 它应该调用一个 DAO 方法 getUserDetails() 并且 DAO 将隐藏需要调用多个表的事实。
我推荐您问题中的第一个选项,但我不会将自己限制在“每个容器类一个 DAO”的规则中。
【讨论】:
以上是关于每个“容器”类一个 DAO 还是每个表一个 DAO?的主要内容,如果未能解决你的问题,请参考以下文章