非常に面白い話題ですね!ちょっと簡単にまとめてみました。参考になれば幸いです。 話は若干逸れますが、そもそも相互参照がつらいって話があるので、その話から。DDD二部 関連の章を読んでいたら理解できると思いますが、双方向の関連は仕様を満たしているか検証する実装コストが高いと思います。 Line line = new Line(id); Point point = new Point(id); point.setLineId(line.getId()); // --- (A) line.addPoint(point); // --- (B) この場合、(A), (B)は両方の状態が正しく設定されていないといけません。しかし、実際は(A)もしくは(B)の参照の設定を忘れてしまうと、どちらが正しい状態を示しているか見分けがつかなくなります。 まぁ、それだけ参照が増えるというのは設計や実装が複雑にな
![ドメインモデルの完全な状態を保つ方法](https://cdn-ak-scissors.b.st-hatena.com/image/square/f6bc393cd0b6bd2196935e603c5d031bd6ca6699/height=288;version=1;width=512/https%3A%2F%2Fcdn.sstatic.net%2FSites%2Fja%2FImg%2Fapple-touch-icon%402.png%3Fv%3D1cfb10b305ca)