【问题标题】:Using DAO calls inside another DAO - DAO dependency在另一个 DAO 中使用 DAO 调用 - DAO 依赖项
【发布时间】:2013-10-24 12:01:53
【问题描述】:

我有一个基本问题。

我一直在创建关注点分离的 DAO。每个 DAO 都集中在上下文中的 BusinessObject 上。我的问题是在另一个 DAO 中使用一种 DAO 方法。我认为这是错误的,但没有足够的数据支持。

情况如下。

EmpDAO:
   getEmp(empId)
   getEmps(deptId)
   getEmps(deptName)

下面的实现有什么问题

getEmps(deptName):
    // Assume this is cached and there is no question of two N/w calls and having any gain by joins
    DeptDAO.getId(deptName)
    getEmps(deptId)

在 EmpDAO 中使用 DeptDAO 会出现什么问题?或者我不应该在另一个 DAO 中调用 DAO。

问候 阿莫德

【问题讨论】:

  • 我看不出你的方法有什么问题。
  • 它看起来像是哲学而不是技术(有人会说“设计模式”;)。就我而言,我可以告诉我,对于一个给定的 DAO,如果它允许避免重复代码并简化代码片段,我会毫不犹豫地使用其他 DAO。
  • 请不要遵循代码结构,这些是模板。

标签: java dependencies dao


【解决方案1】:

不鼓励在另一个 DAO 中调用 DAO。为什么你的服务不做这项工作?服务方法如:

public void combinedServiceWork(String deptName) {
    long deptId = DeptDAO.getId(deptName);
    EmpDAO.getEmps(deptId);
}

并在EmpDAO中去掉getEmps(deptName)

【讨论】:

  • 我可以这样做,但我不想在不同的服务方法或服务类中重复相同的代码。无论如何,问题不在于替代方案是什么。问题是,是否有充分的理由(或任何理由)不这样做。我只是想确定我们在这里不是羊 :) 如果不鼓励,为什么?
【解决方案2】:

我不知道你从哪里得到你的信息。你能提供一个引文告诉你这是一个如此令人发指的错误吗?这可能是一种手动编码一对多关系的方法。

我有更多的问题,使这些静态。

【讨论】:

  • 你为什么认为他在打静态电话?也许他只是不尊重惯例,使用以大写字母开头的成员名称。
猜你喜欢
  • 2011-01-18
  • 2019-07-31
  • 2012-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-24
  • 2016-03-26
相关资源
最近更新 更多