在使用DAO模式时,如何处理多对多关系?DAO是否负责使用第三个链接表将两个实体进行关联?例如,我有两个实体:客户
和产品
。
我需要提供以下方法:
public void assignCustomerToProduct(...);
public List<Product> getSelledProducts(long customerId);
这个方法需要使用第三张表作为链接表。 CustomerDao
应该负责提供这个方法吗?还是将这些方法排除在服务层之外更好?
在使用DAO模式时,如何处理多对多关系?DAO是否负责使用第三个链接表将两个实体进行关联?例如,我有两个实体:客户
和产品
。
我需要提供以下方法:
public void assignCustomerToProduct(...);
public List<Product> getSelledProducts(long customerId);
这个方法需要使用第三张表作为链接表。 CustomerDao
应该负责提供这个方法吗?还是将这些方法排除在服务层之外更好?
其中一个对象应该拥有这个关系。例如,只有在保存雇员时才会保存职位。
如果您这样做,那么Employee就变成了(稍微有点)像聚合根(如果您谈论DDD存储库)。然后,如果需要,存储库负责创建职位并在链接表中插入多对多条目。
如果Position本身是一个聚合根,则EmployeeRepository仅负责更新链接表,但不负责持久化Position。