每个“容器”类一个 DAO 还是每个表一个 DAO?

2024-05-11

我有一个“容器”类,其中的字段包含在多个数据库表中,并且我使用 DAO 模式来访问数据。

问题是,我应该为这个“容器”类创建一个 DAO,还是每个表都有一个 DAO 并合并它们的数据更好?


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

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

例如,如果您的应用程序需要来自 Users 表和 EmailAddresses 表的一些用户数据,则您的应用程序代码不必协调两个 DAO - 它应该调用一个 DAO 方法 getUserDetails() 并且 DAO 将隐藏以下事实:需要调用多个表。

我推荐您问题中的第一个选项,但我不会将自己限制在“每个容器类一个 DAO”规则中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

每个“容器”类一个 DAO 还是每个表一个 DAO? 的相关文章

随机推荐

  • Java 中何时使用原始类型和何时使用引用类型

    在这种情况下你应该使用原始类型 int 或引用类型 Integer This question https stackoverflow com questions 2508918 激发了我的好奇心 在什么情况下你应该使用原始 类型 int
  • 从鼠标位置获取地图纬度经度

    我正在尝试将鼠标在谷歌地图上的位置转换为 LatLng 对象 我看到很多关于通过谷歌地图 点击 事件等获取位置的帖子 如下所示 google maps event addListener map click function event m
  • 当REST客户端和服务器在同一台服务器上时如何避免网络调用

    我有一个 Web 应用程序 其中两个主要组件是网站 在 Groovy 和 Grails 中实现 和后端 RESTful Web 服务 使用 JAX RS Jersey 和 Spring 实现 这两个都将在 Glassfish 中运行 该网站
  • C++调用基类的模板函数

    下面是两个案例 情况 1 Base gt BaseIndirect gt DerivedIndirect 情况 2 基础 gt 派生 在案例 2 中 我可以使用 3 个符号调用基类的模板函数 在情况 1 中 我可以仅使用其中一种符号来调用基
  • Powershell脚本命令持久化

    我开始学习 Powershell 并编写一个模块 psm1 来存储我的函数 然后我将这段代码插入到模块中 以便在修改模块时重新加载模块 function reload Remove Module init Import Module F S
  • 保存具有自定义前向功能的 Bert 模型并将其置于 Huggingface 上

    我创建了自己的 BertClassifier 模型 从预训练开始 然后添加由不同层组成的我自己的分类头 微调后 我想使用 model save pretrained 保存模型 但是当我打印它并从预训练上传时 我看不到我的分类器头 代码如下
  • 如何获得凸包中均匀分布的点?

    给定一组点 points np random randn n 3d points 我想均匀地填充由凸包定义的体积 其中它们位于一个列表 np array of shapenx3 的 3d 点 我可以得到凸包 hull scipy spati
  • SwiftUI 转义闭包捕获变异的“self”参数

    我有一个可以通过两种方式打开的视图 一个包含提供给它的数据 另一个包含对 Firestore 文档的文档引用 我创建了两个构造函数 在第一个构造函数中我提供数据 在另一个构造函数中我提供文档参考 然后我使用此引用进行网络调用 但出现错误 E
  • VBA 代码中的 Excel 公式

    所以 在 Sheet1 中 我有一些名称的基础 它看起来像这样 在 Sheet2 中 我正在使用 Sheet1 中的这些名称 我这样做的方式是在 A 列中输入代码值 在 B 列中输入名称 在 C 列中输入姓氏 看起来像这样 我已经用公式完成
  • 命令行显示文件的属性?

    我想编写一个显示默认 Windows 属性表的应用程序 我找不到太多关于以正常编程方式执行此操作的信息 所以我想也许可以使用命令行调用 有谁知道 Windows 命令行调用文件的属性 详细信息窗口吗 没有任何运气去寻找它 这个窗口在这里 看
  • 如何添加 Maven 执行任务以在“mvn test”上执行

    我的 pom 中有以下 exec 任务
  • cordova 使用什么 js“引擎”?

    Cordova 使用什么 JS 引擎 它是特定于平台的还是跨所有平台的一个标准 意味着 iOS 的 safari 和 Android 的 chrome 以及 Windows 可能的 IE 标准 或者跨所有平台的 Cordova JS 引擎
  • PHP 中的循环数组

    我创建了一个由部分和问题组成的数组 如何循环浏览各个部分并显示每个部分的嵌套问题 这是我创建数组的方式 db db open query SELECT FROM assessment selections WHERE assessment
  • 多个共享对象使用相同的原型导致错误:文件已存在于数据库中

    与protobuf3相关的错误 我有一个项目 它有一个 C 可执行核心和几个称为插件的共享对象 so dll 当核心启动时 它将使用 dlopen 加载这些插件 核心和插件使用protobuf作为通信协议 因此它们必须编译生成的 pb cc
  • 在R闪亮中,如何在UI端使用在SERVER端计算的值?

    在我的 R闪亮应用程序中 我想调整我的高度d3heatmap 见包装d3热图 https cran r project org web packages d3heatmap index html 作为我的数据框行数的函数 有一个论点heig
  • 优化 WPF 中由单元格组成的网格以获得最短路径

    我目前正在尝试在 WPF 中制作一个由 Cell 对象组成的网格 我需要将单元格绑定到对象 该对象需要位于二维数组中 我需要它很大 可扩展 并改变单元格的颜色并将数据存储在对象中 我已经实现了 但是绘制网格似乎很慢 100x100 网格需要
  • .NET 中的线程中止

    我有一个线程正在分析文件并对数据库进行事务调用 每个事务都有一个审计条目作为其事务的一部分 调用 Thread Abort 来停止文件的处理有什么大问题吗 而不是到处散布丑陋的安全点 文件将在 Abort 调用后关闭 明显的问题是放弃交易的
  • django:django.utils.function.SimpleLazyObject 的目的?

    我遇到了分配的问题request user到一个名为prior user 然后基本上对用户进行了身份验证 然后检查是否request user prior user 我预计它们不会相同prior user应包含 AnonymousUser
  • Microsoft Edge WebView2 - 加载时示例崩溃

    我采用了最新版本的 Microsoft Web WebView2 0 9 515 预发布 并将其添加到测试 C WinForms 应用程序中 我使用VS 2019 NET框架是4 7 2 将WebView2控件放置在窗体上 编译并运行 应用
  • 每个“容器”类一个 DAO 还是每个表一个 DAO?

    我有一个 容器 类 其中的字段包含在多个数据库表中 并且我使用 DAO 模式来访问数据 问题是 我应该为这个 容器 类创建一个 DAO 还是每个表都有一个 DAO 并合并它们的数据更好 您应该根据应用程序的需求而不是数据库的布局来设计 DA