DAO。多对多的关系

时间:2013-02-05 10:11:14

标签: java oop repository-pattern dao

使用DAO模式时如何处理多对多关系? DAO是否负责使用3-rd Link表连接两个实体?例如,我有2个实体:CustomerProduct

我需要提供类似的方法:

public void assignCustomerToProduct(...);
public List<Product> getSelledProducts(long customerId);

此方法需要使用第3个表作为Linkage表。 CustomerDao是否负责提供此方法?或者最好将这些方法排除在服务层之外?

1 个答案:

答案 0 :(得分:1)

其中一个对象应该拥有这种关系。因此,例如,只有在保存员工时才会保存位置。

如果你这样做,那么Employee会变成(有点)像聚合根(如果你在谈论DDD存储库)。然后,存储库负责在需要时创建位置并在链接表中插入多对多条目。

如果Position是一个聚合根本身,那么EmployeeRepository只负责更新链接表,但不负责持久化位置。