なぜDAOが必要なのか、私には100%確信が持てません。Entity Manager はデータ アクセス オブジェクトとしての役割を果たします。リポジトリに追加する機能の種類がわかりません。永続的な機能だけが必要な場合は、entitymanager を使用してください。永続関数内にさらにロジックが必要な場合は、マネージャー クラスを導入できます。
これが私が通常どのように働くかです:
リポジトリ クラスにはクエリしかありません。そして、マネージャー クラスと呼ぶ別のサービス レイヤーを導入しました。それらの中に、エンティティを変更するだけでなく、エンティティを永続化するための全体的なメソッドがあります。
例:
User - UserGroup の状況があります。FOSUserBundle の UserManager を使用していますが、UserGroupManager も導入しています。この UserGroupManager には、ユーザーをグループに追加 (参加) したり、削除したり、グループに招待を送信したり、これらのアクションを実行したときにいくつかのイベントをトリガーしたりできる機能があります。また、UserGroupRepository を使用して、特定の人物に属するグループを検索したり、通常必要なすべてのデータを自分のグループに結合したりします。