使用DAO模式时如何处理多对多关系? DAO是否负责使用3-rd Link表连接两个实体?例如,我有2个实体:Customer
和Product
。
我需要提供类似的方法:
public void assignCustomerToProduct(...);
public List<Product> getSelledProducts(long customerId);
此方法需要使用第3个表作为Linkage表。
CustomerDao
是否负责提供此方法?或者最好将这些方法排除在服务层之外?
答案 0 :(得分:1)
其中一个对象应该拥有这种关系。因此,例如,只有在保存员工时才会保存位置。
如果你这样做,那么Employee会变成(有点)像聚合根(如果你在谈论DDD存储库)。然后,存储库负责在需要时创建位置并在链接表中插入多对多条目。
如果Position是一个聚合根本身,那么EmployeeRepository只负责更新链接表,但不负责持久化位置。