2009-06-13 13 views
4

すべてのプロジェクトで使用する完全なカスタムDAL(データ抽象化レイヤー)クラスを作成したいと考えています。DALを作成する最良の方法は何ですか?

私はインターネットを検索し、これに関するいくつかのサンプルを見つけましたが、どのアプローチが最良かはわかりません。

[Attributes]ですか?または<Generics>などを使用しますか?

だから私に頭のラインを与えると私はそこから行くだろう。

もう一度お付き合いいただき、ありがとうございました。

答えて

6

最善のアプローチは、次のとおりです。

その学術的な研究プロジェクトのためにまたはあなたがビジネスの出荷オームズを構築する場合を除き、自分自身にをそれをしないでください。

まず、数多くの既存のORMソリューションを試してみてください。 (エンティティフレームワーク、亜音速、nhibernateなど...)。彼らはすべて、彼らの癖と限界がたくさんのawesomenessと混ざり合っています。

ORMは非常に難しく、大規模な取り組みをしていません。

少し関連してお金に:http://wekeroad.com/2009/06/11/youre-not-your-data-access/

+1

Wahidは、永続性階層(データ抽象化層)をどのように構築するかを尋ね、ORMの書き方を尋ねません。 –

+0

おそらく、それは明らかではない...それにもかかわらず、彼が使用できる構造は彼が使用するORMに依存する。多くのORMはPOCOの永続性をサポートしていませんが、Railsのアクティブレコード(またはLINQ to SQL)のようないくつかのORMは特定の構造を指示します。それはすべてに依存し、とにかく「最良の」方法はほとんどありません。良いアーキテクチャーコンセプトが必要な場合は、リポジトリーパターンについて読んでください。 http://geekswithblogs.net/gyoung/archive/2006/05/03/77171.aspx –

4

あなたがスターターであれば(あなたがWeb開発にある場合より多くのように)私はSubSonicの使用をお勧めします。

1

また、あなた自身でORMツールを実装しようとしないでください、それらの多くは自由に利用可能です。しかし、DALはORMツールではなく、ORMツールはDAL内で使用されます。 DALは、より保守的な解決策を得るために、残りのアプリケーションからデータアクセスロジックを隠すためのものです。最後に、通常のSQL文を使用することもできます。あなたのDAOクラス。 DALを作成するときに注意すべき点は、アプリ/他のレイヤーの他の部分とできるだけデカップリングすることです。これは、インタフェースに対してコーディングし、依存性注入を使用することで実現できます。 Springはここで大きな助けになります(あなたはJavaでプログラムを与えられています)。その上に、そのような層を構築する上で大きな魔法はありません。

1

独自の永続性マネージャーを作成しないでください。クラス構造から開始してORMで生成する場合はオブジェクトリレーショナルマッパー(ORM)を使用するか、SQLテーブルから開始する場合はSQLマッパーを使用する必要があります。あなたのクラスがテーブルの行を表すようにしたい。

iBatis SQLマッパーを使用していて、ORMにはHibernateのような人がたくさんいます(学習曲線はありますが)。

Martin Fowlerは、Patterns of Enterprise Application Architecture(ここではcatalogです)にデータアクセスレイヤーを書き込むためのいくつかの優れたアプローチについて説明しています。

たとえば、iBatis for .NETはFowlerのTable Data Gatewayパターンを使用します。 iBatisでは、XMLでTable Data Gatewayオブジェクトを指定します。通常、各ゲートウェイは1つのSQLテーブルへのアクセスを管理しますが、マルチテーブル操作も実行できます。ゲートウェイはSQLステートメントで構成され、それぞれがXMLのビットでラップされています。各SELECTは、1つまたは複数の行オブジェクトを返します。これらは、属性とgetterおよびsetterメソッドのセットです(.NETでは、POCOまたはPONO、Plain Old C#ObjectsまたはPlain Old .NETオブジェクトと呼ばれます)。各INSERTまたはUPDATEは、入力としてPOCOを取ります。これはかなり直感的で、あまりにも難しいとは思えませんでした。異なると競合する要件を持つ非常に多くの異なるアプリケーションシナリオがあると私は誰もがONE究極DALを考え出すことができると信じていないことを必要とする -

1

はulimateを作成しようとしてい、最高の完璧なDALは少し狂ったようです。

既存のORMツールのいくつかをチェックアウトし、そのうちの1つまたは2つを知り、その強みと欠点を知ってから、与えられた状況ごとに最適なツールを選ぶことができます。私はそれが常に同じだろうとは思わない.....

SubSonicは、SQL Serverをバックエンドとして使用している限り、Linq-to-SQLと同様に、より小さな、より軽いプロジェクトに最適です。より多くのエンタープライズパワーが必要な場合は、NHibernate、ADO.NET Entity Framework、または他のより大きな、より能力の高いプレーヤー(小さくて単純なシナリオにはあまりにも複雑すぎる)を見てください。

DALを作成するには完璧な方法 - 現在のニーズに最も適したものを選択する方法を学び、自分自身を再考しないでください - そこにあるものを使用してください!

マルク・

10

をお読みください:

  • は常に時々、ストアドプロシージャ
  • 使用NHibernateはを使用してストアドプロシージャ
  • を使用しないでくださいストアドプロシージャ
  • を使用
  • 使用亜音速
  • 使用Entity Frameworkの
  • あなた自身を書くあなたが所有して書くことはありません
  • 使用POCO
  • 使用ActiveRecordの
  • 使用IRepository
  • 常にファウラーが
  • 決して言って何をすべきかファウラーが言うことを実行する
  • Linq to SQL、iを使わないでくださいSQLのトンの死者
  • 使用LINQの、それはすべてのことを行うと、あなたは罰金になり、もはや

死んません。

+0

東と西のような音です。ではない (: (: –

関連する問題