ユーザーがアカウントを作成し、お互いに「ポイント」を与えることができる小さなアプリケーションがあります。UserAccount はオブジェクトであり、Point もオブジェクトであり、それらの間には集約関係があります。各 UserAccount には、Point のコレクションであるメンバー変数 (PointHistory) があります。
Point オブジェクトには、UserAccount オブジェクトが Point を送受信したプロパティが含まれているだけです。
オブジェクト モデルを永続化するためにクラスを単純にシリアル化したときは、これで問題ありませんでした。ただし、現在、オブジェクト データを永続化するためにデータベースを実装しており、一度に 1 つまたはいくつかのオブジェクトのみがメモリに読み込まれます。オブジェクトをロードするために、データベースの行から新しい UserAccount を作成するコンストラクター メソッドと、データベースの行から Point を作成する同様のコンストラクターがあります。これが問題の始まりです。最初のコンストラクターがまだ構築していないものを2 番目のコンストラクターが参照する必要がある場合、あるオブジェクトのコンストラクターが別のオブジェクトのコンストラクターを呼び出すにはどうすればよいでしょうか。構築を完了するには、オブジェクトがすでに構築されている必要があります。
簡単な解決策は、Point オブジェクトのコレクション (PointHistory) を、データベース クエリから取得した文字列のコレクションに置き換えるだけです。これは私の目的には十分です。ただし、Point オブジェクト/オブジェクト モデルを放棄しない別の方法があるかどうか、また、この集約/永続性の問題が一般的かどうか疑問に思っています。