Nehmen Sie eine Klasse, die mit mehreren anderen Klassen in Verbindung steht. Die erste Klasse kann als das Aggregat (Root) betrachtet werden. Wie würde man die Aufrufe aus Sicht der Diensteschicht am besten aufteilen?
- Rufen Sie das Repository des Aggregats für den gesamten Objektgraphen auf und rufen Sie von diesem speziellen Repository aus andere Repositories auf, um die Speicherung der Beziehungen zu übernehmen (ein Repository pro Klassentyp).
- Rufen Sie das Repository des Aggregats für den gesamten Objektgraphen auf und behandeln Sie alles in dieser einen Methode (so dass alle Beziehungen in derselben Methode gespeichert werden).
- Rufen Sie aus der Serviceschicht heraus die Repositories für das Aggregat auf, und rufen Sie direkt danach, wiederum aus der Serviceschicht heraus, die Repositories der zugehörigen Klassen auf.
- Fügen Sie eine zusätzliche Schicht zwischen dem Dienst und den Repositories ein und gehen Sie innerhalb dieser zusätzlichen Schicht vor wie in Option 3.
Ich habe bereits alle 3 möglichen Lösungen im Produktionscode gesehen, aber ich bin an der saubersten Lösung und einer Begründung interessiert, warum man sich für diesen Ansatz entscheiden würde.