複合クラスPharmaProduct
(製薬会社の製品階層を表す) とそのためのデータベース テーブルがあるとします。PharmaProduct
データをオブジェクトにロードする方法は 2 つあります。
(1) オブジェクトがインスタンス化されるときに、オブジェクトツリー全体を構築します。ツリーに変更を加え、ツリーに再帰ループを適用してそれらの変更を永続化します (これは実際に C# がDataSet
機能する方法です)。
(2) ノードをロードします。次の場合にのみ、他のノードをロードします。
PharmaProduct GetParent()
また、
List<PharmaProduct> GetChldren()
が呼び出されます (実際にはデータベースへの直接アクセスを行います)。ノードに変更を加えます。そのノードのみを保存します。
このタイプのテーブルには、製薬会社が製造する品目の種類によっては、1,000 のエントリが含まれる場合があります。その場合、最初のアプローチは不器用すぎる(そしてメモリを消費する)と思います。
複合パターンの問題が発生した場合、実際にデータベースにアクセスするにはどうすればよいですか?