Javaでドメイン駆動設計を実践しようとしています。

質問ですが、DBレコードからドメインモデルを完全に構築するのがコスト面で現実的でない場合、どのように実装すべきでしょうか?

例えば、Lineが多数のPointを持ち、かつ、PointからLineを参照可能なモデルがあるとき、指定するidのPointの完全な状態のドメインモデルを構築するには、PointLineに加え、Lineに属する全てのPointのDBレコードを獲得しなくてはなりません。仮にLine.pointsの数が非常に多い場合、完全な状態のドメインモデルを構築するコストが高くなります。

public class Line {
    private Long id;
    private List<Point> points;
}
public class Point {
    private Long id;
    private Line line;
}
// setter, getter は省略

この場合、Line.pointsを遅延ロードするというのが一般的な解決策でしょうか? 遅延ロードは遅延ロードを行う操作が行われるまでDBセッションを閉じられないのが少し気にかかります。

別の策として、似て非なるLinePointクラスを用意することも考えましたが、LinePointクラスにフィールドやロジックが増えてくるとコードの重複が多くなってしまいそうです。

皆さんはこういったケースではどのように実装されていますか?