【问题标题】:Is DAO responsible for inserting records into 'join' tableDAO 是否负责将记录插入到“连接”表中
【发布时间】:2013-01-20 10:31:30
【问题描述】:

例如,如果我有两个表:CustomerProduct,我需要将客户映射到产品(多对多)。所以我需要第三个(连接)表,其中将包含CustomerIdProductIdDAO 是否负责将记录插入到第三个(连接)表中?

附:现在我有CustomerDAOProductDAO。将客户映射到由服务层处理的产品。

【问题讨论】:

    标签: design-patterns language-agnostic dao


    【解决方案1】:

    是的,你的 DAO 可以实现类似的方法

    • updateProduct(CustomerId)
    • updateCustomer(ProductId)
    • findCustomerByProduct(productId)
    • findProductsByCustomer(customerId)

    【讨论】:

    • 即两个 DAO(CustomerDAO 和 ProductDAO)现在都可以使用第三张表了吗?
    • 是的,您将与此 join-DAO 中的两个实例进行交互
    • 谢谢。但是assignCustomerToProduct(int customerId, String productId) 方法呢?此方法会将记录插入到第三个表中。 CustomerDAO里面可以有这样的方法吗?
    • 那些不是硬性规定,只是给出一个想法。是的,你提到的方法名更有意义
    【解决方案2】:

    是的,当然,这是它的责任。如果不是DAO,那谁来代替它呢?

    【讨论】:

    • 目前它在服务层实现(见更新的问题)。
    • 就我而言,我不认为在第三个服务层类中实现这种关系是个好主意。
    • 好的,谢谢。但是我必须在哪里实现(在 DAO 或服务层?)方法,我需要找到与给定对象松散耦合的对象。例如,我有 EmployeeManager 实体(带有相应的表和 DAO)。我需要找到给定员工的经理。但是我需要走很长的路才能找到给定员工的经理(员工-产品-提供者-组织-经理(不是真实的结构,只是举例))。 DAO 是否有责任拥有这样的方法(EmployeeDAO#getManager(int employeeId))?还是把这个方法放到服务层比较好?
    猜你喜欢
    • 2011-10-14
    • 2013-01-01
    • 2011-06-27
    • 2017-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多