In einer anderen Welt, im Event Sourcing, ist ein Aggregat (Root) ein anderes Konzept. Event Sourcing kann zusammen mit CQRS, DDD usw. vorkommen.
Beim Event Sourcing ist ein Aggregat ein Objekt, dessen Zustand (Felder) nicht auf einen Datensatz in einer Datenbank abgebildet wird, wie wir es aus der SQL/JPA-Welt gewohnt sind.
Ist keine Gruppe von verbundenen Unternehmen.
Es handelt sich um eine Gruppe von Bezugsdatensätzen wie in einer Verlaufstabelle.
GiftCard.amount ist ein Feld in einem GiftCard Aggregat, aber dieses Feld wird allen Ereignissen zugeordnet, wie z.B. card-redeemed (Geld von der Karte nehmen), die jemals erstellt wurden.
Die Datenquelle für Ihr Aggregat ist also nicht ein Datensatz in einer Datenbank, sondern die vollständige Liste der Ereignisse, die jemals für dieses spezifische Aggregat erstellt wurden. Wir sagen, dass wir das Aggregat als Ereignisquelle nutzen.
Nun können wir uns fragen, wie das geht? Wer aggregiert diese Ereignisse, so dass wir immer noch mit einem Feld arbeiten, z. B. GiftCard.amount? Wir könnten erwarten, dass der Betrag eine Auflistung und kein großer Dezimaltyp ist.
Ist die Event-Sourcing-Engine, die die Arbeit macht, die einfach alle Ereignisse in der Erstellungsreihenfolge wiedergeben könnte. Aber das ist außerhalb des Rahmens für diesen Thread.