集計を適切にモデル化する方法を知りたいです。ドメインはアカウンティングで、Account、AccountingEntry (代わりに値オブジェクトにする必要がありますか?)、AccountingTransaction の 3 つのエンティティがあります。アカウントは、顧客の銀行口座と言えます。AccountingEntry はアカウントのエントリであり、AccountingTransaction は単一のトランザクションを構成する複数のエントリを関連付けます (たとえば、アカウント A からアカウント B への送金)。一緒。
私の考えでは、AccountingTransaction 内の集計として Account と AccountingTransaction をモデル化し、AccountingEntry をコレクションとしてモデル化します。これは、トランザクション内のすべてのエントリの合計が 0 になる必要があるという不変条件をアカウンティング トランザクション集計で強制できるようにするためです。エントリは、関連付けられたアカウントの ID への参照を保持します (これは、たとえばトランザクションを取り消したい場合に役立ちます)。アカウントはエントリへの参照を保持しませんが、残高を保持します。
私は saga を使用して、アカウントの入金と引き落としのプロセスをトランザクションで管理します。
私がこれを正しくモデリングしているかどうかを知りたいです。
また、無効な (存在しない) アカウントへの参照 (ID) を保持する会計エントリを作成できないようにする方法も知りたいです。エントリを作成するためのファクトリとしてアカウントを使用し、独自の ID を渡す必要がありますか?