ネタ元
自分で実践できていないことを偉そうに言うのもアレですけども…
確かに、(明細の特定の1行ではなくて)明細テーブルの複数行が欲しい場合、結合して取得するのは嫌ですね。
ネットワークトラフィックやメモリの無駄であるばかりでなく、例えば、ヘッダ部の情報が欲しいときに
明細[0].ヘッダタイトル
とか書くのは生理的に嫌です。
が、それをクラスにしたときにどうするべきかというのはまた別なのかなーと。
例えば、明細行から、それに対応するヘッダ行のデータが欲しいときはどうしようかという。
明細行にヘッダ行への参照を持たせるっていう設計もアリですが、明細クラスにヘッダデータをプロパティとして持たせてしまうのもまたアリかもしれない。
DB内のテーブルは正規化しますし、SQL発行時には別々に取得したいですけれども、使うときは非正規化されていた方が使いやすいのかもしれないと。
そうすると、データセットを非正規化するよりも、データセットは隠蔽して、エンティティクラスを非正規化すべきなのかなぁ、とか思ったり思わなかったり?
この辺は今後の勉強課題なのですorz