5

DAOパターンを使用するときに多対多の関係を処理するにはどうすればよいですか?DAOは、3番目のリンクテーブルを使用して2つのエンティティをリンクする責任がありますか?たとえば、2つのエンティティがあります:CustomerProduct

そして、私は次のような方法を提供する必要があります:

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

この方法では、3番目のテーブルをリンケージテーブルとして使用する必要があります。CustomerDaoこの方法を提供する責任がありますか?または、このメソッドをサービスレイヤーに除外する方がよいでしょうか。

4

1 に答える 1

2

オブジェクトの1つが関係を所有している必要があります。したがって、たとえば、ポジションは、従業員を保存するときにのみ保存されます。

これを行うと、Employeeは(少し)Aggregate Rootのようになります(DDDリポジトリについて話している場合)。リポジトリは、必要に応じて位置を作成し、リンクテーブルに多対多のエントリを挿入する責任があります。

Position自体が集約ルートである場合、EmployeeRepositoryはリンクテーブルの更新のみを担当し、Positionの永続化は担当しません。

于 2013-02-05T10:33:39.060 に答える