DBにDataAccess層を構築していますが、コレクションの受け渡しにどのようなデータ構造を使用することをお勧めしますか?データアクセス層の推奨データ構造
答えて
私は、dbテーブルにマップされたデータアクセスオブジェクトのリストを使用します。
私はどの言語を使用しているのかよく分かりませんが、一般的にシンプルさと拡張性のトレードオフがあります。
データセットを直接返すと、データベース固有のクラスに結合されました。これは拡張の余地がほとんどありません。ファイルや他の種類のデータソースへのアクセスを許可するとどうなりますか?しかし、それはまた非常に簡単です。これはレコードセットパターンであり、C#/ VBではこれに対する組み込みサポートが多数提供されています。 GUIレイヤーはレコードセットにアクセスし、データを簡単に操作できます。これは簡単なアプリケーションでうまくいきます。
一方、データセットをカスタムオブジェクトにラップし、ゲートウェイメソッドを提供できます(ゲートウェイパターンhttp://martinfowler.com/eaaCatalog/gateway.htmlを参照)。この方法はより複雑ですが、より多くの拡張性を提供します。大規模なアプリケーションでは、ビジネスロジック、データロジック、およびGUIロジックを分離する必要がある場合、これはより堅牢な方法です。
大規模なエンタープライズアプリケーションの場合は、オブジェクトリレーショナルマッピングツール(ORM)を使用して調べることができます。 Javaオブジェクトを自動的にデータベーステーブルにマップするのに役立ちます。彼らは痛ましいSQLの詳細を隠しています。 Springなどのフレームワークは、ORMの優れたサポートを提供します。
私はビジネスロジックからDAOを切断できるように、オブジェクトの配列を使用する傾向があります。
たとえば、DAOにデータをデータセットとして保存し、更新を行う前にデータベースに簡単に追加できるため、情報を渡して変更操作を行うことができます。彼らが一度に行うことができる変更をコミットしたい。
私は、データベース内で何を変更する必要があるのかを判断するのが難しくなるため、ユーザーは構造自体を追加/変更できないことを好みます。
最初に配列を返すことで、データベース内の内容を表示できます。
次に、プレゼンテーションレイヤーが変更されると、コントローラによってDAOを更新できます。 DAOをデータセットから別のものに変更することができるので、システム全体がより柔軟になり、アプリケーションの残りの部分は気にしません。
最も一般的なのは2つの選択肢があります。
ResultSetを表示する最初の方法は、Mapのリストで、各MapはResultSetの行を表します。キーは、FROM句に列挙された列です。値はデータベース値です。
ResultSetを参照する2つ目の方法は、List of Mapのように、各ListはResultSetの列を表します。 Mapキーは、FROM句に列挙されている列です。値はデータベース値のリストです。
もしあなたが本格的なORMをしたくないのであれば、あなたは長い道のりを歩むことができます。
- 1. コラボレーティブまたは構造化の推奨?
- 2. Web MVCアプリケーションの推奨データ構造/形式ですか?
- 3. SCSS:Bemおよび推奨ディレクトリ構造
- 4. 階層構造を表すデータ構造
- 5. 階層&データ構造Javaで
- 6. データアクセス層
- 7. データアクセス層のデザインパターン
- 8. データアクセス層のデザインパターン
- 9. データアクセス層のテスト
- 10. 非リレーショナルデータベースの階層データに関する推奨事項?
- 11. 効率的な追加のためにJuliaで推奨されるデータ構造
- 12. 角度1.5:コンポーネントベースのアプリケーションの推奨構造ですか?
- 13. EFのデータベース構造の推奨重量ゾーン価格
- 14. 変更フラットコラム構造データの階層構造に
- 15. MVC4ウェブサイト/ Webアプリケーションの推奨IISディレクトリ構造
- 16. 複数の製品と顧客に推奨される構造
- 17. ElasticSearchの構造と検索方法に関する推奨リクエスト
- 18. C:動的サイズの構造体に推奨されるスタイル
- 19. MySQLのテーブル構造に関する推奨事項
- 20. 推奨されるsvnの構造に移動
- 21. Rustプロジェクトの推奨ディレクトリ構造は何ですか?
- 22. Django Haystack Solr - Solrの推奨場所とディレクトリ構造
- 23. XamDataGrid同じデータ型の階層構造
- 24. ASP.NET MySQLデータアクセス層
- 25. Kohanaのデータアクセス層は
- 26. カフカ推奨システム構成
- 27. 推奨されるスケーラブルなAngularJSプロジェクト構造ですか?
- 28. スプリングブーツレストプロジェクトに推奨されるプロジェクト構造は何ですか?
- 29. NHibernate推奨されるデータベース構造外部キー
- 30. DAO&BO(データアクセス層) - アーキテクチャ
良い質問..私はDataSetを使用し続けますが、それは最高だとは思わない – Daniel