RDBアプリケーションのためのパターン@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。14:22今までVB.NETで業務アプリケーションの開発に3本参加しました。規模は小、中、大とそれぞれです。今までは与えられた設計方針でRDBへのデータ取得・更新を行ってきましたが3本とも共通して言えるのはRDBとのやりとりをいろいろ工夫してクラス化しているが業務処理の複雑さなどから破綻してしまうということです。自分なりにサイトを調べたり、本を読んだりしているのですがパフォーマンスに優れ、保守性の高い、複雑な処理でも対応できる、エレガントなクラス設計方法に辿りつけません。先人たちが作った優れたRDBアプリケーションのためのパターンがどこかにあるはずだと信じているのですが、そもそも無いのでしょうか?具体的な情報のあるサイトやお勧めの参考書などがありましたらご教授ください。14:41規模によって最適な方法は違うので、いわゆる銀の弾丸的なものはないといってよいでしょう。ADO.NETの設計思想についてはやはり、お読みになった「プログラミングADO.NET」が詳しいと思います。素直にRDBのスキーマを利用してDataSet/DataTableを基本に考えるのが定石です。vNext(次期バージョン)ではO/Rマッピング的な要素も入ってくる予定です。14:53引用:先人たちが作った優れたRDBアプリケーションのためのパターンがどこかにあるはずだと完璧だと思うものにはなかなかたどり着けないでしょう。ある瞬間には完璧に見えるものも、視点を変えると問題点がみえてくるものです。MSもデータアクセスの方法を変えつづけています。変わりすぎるのを嫌う方もいらっしゃいますが、私は、なにも提案がなく放置されるよりもかなりいいと思っています。プログラミングADO.NET」では、次に読む本として、私は、通称「赤間本」と呼ばれているシリーズをお勧めします。ASP.NET2.0上での参照系・更新系アプリケーションの設計」.NETでASP.NETですが、それ以外の開発のためにも非常に役に立ちます。15:00vincent様DataSet/DataTableを使用しようと考えています。「プログラミングADO.NET」を読んで考えたのは共通するプロジェクトにDBのテーブルに対応するクラスを作成し、InsertCommand,UpdateCommand,DeleteCommandのパラメータ設定などを行う。データ取り出しは結合クエリを使わず単体クエリを複数回発行しDataSetでリレーションを張る。簡単な画面では比較的スムーズに行くと予想しますが結合クエリーを使用せず単体クエリーの複数回発行にやはり反対があがりました。DataTable/DataSetでの更新だけではなくExcuteNonQueryでInsert/Update/Delete文を発行したいなどの要望があり、全てに対応できるようには作れないなというのが現時点での状況です。15:03RDBネタというよりアーキテクチャネタとして考えたほうがいいかもしれませんね。Practicesシリーズなんかがよろしいかと。FowlerのPofEAAとか。15:28引用:結合クエリーを使用せず単体クエリーの複数回発行にやはり反対があがりました。DataTable/DataSetでの更新だけではなくExcuteNonQueryでInsert/Update/Delete文を発行したいなどの要望があり、全てに対応できるようには作れないなというのが現時点での状況です。私もADO.NETのこの考え方は大いに納得できるのですが、従来型データアクセスに慣れた人から見ると強い違和感があるのも事実です。単体クエリーの集合をデータバインドするのも慣れが必要なので、開発現場で反対意見があがるのも理解できます。.NETに習熟したメンバーが集まらないと厳しいでしょうね。アーキテクチャの美しさを追求しがちですが、実際は開発現場のレベルに合わせた仕組みの導入が重要だと思っています。Reserved.著作権はアイティメディア株式会社またはその記事の筆者に属します。当サイトに掲載されている記事や画像などの無断転載を禁止します。