オブジェクトを保存していないストレージシステムに接続するオブジェクト指向のDALは、いずれもORMを実装しています。 ORMは一般にHibernateのようなものを意味すると理解されていますが、重要なことはインピーダンスの不一致の処理です。
は、データレベルで
を[拡張]別のデータ(OO)に一種(リレーショナル)のデータをマッピングしている場合、インピーダンス不整合が発生します。
例えば、あなたのDALの下の行を何回見たことがありますか?
db.AddInParameter(dbCommand, "Name", DbType.String, name);
またはその他の側
customerId = Convert.ToInt64(dr["CustomerID"].ToString());
あなたのプリミティブデータ型をマッピングする際に多くの問題が出てきます。
オブジェクトレベルでは、DALは使用する構造体を返す必要があります。それは何らかのビジネスオブジェクトか、生データの単なる束か?あなたのDALとORMの両方がこれを処理する必要があります。
デザインレベルでは、作成するオブジェクトに格納されたデータが反映されます。したがって、構造的な違いが生じる可能性があります。これらはORMソリューション内でも処理されますが、DAL内で同じことを強制されることになります。例えば、あなたのOOコードの中では、適切な継承を実装するのが良いでしょうが、それは簡単に何かのリレーショナルに変換されません。
ORMは、DAL内で何をしなければならないかを自動化する製品をプッシュするために作られた用語です。 ORMソリューションは、人生をより簡単にし、多くの品質/パフォーマンスの利点を提供します。しかし、それはあなたのDALの主要コンポーネントの1つがあなた自身のORMを作成しているという事実を変えるものではありません。
@chaos - なぜ特殊用語タグ?? DALとORMは完全に細かい技術的頭字語です –
@DJ:用語に間違った*があることを暗示するために「専門用語」を使用するつもりはありません。 Rich Bの奇妙な再タグ付けの復讐者の別の傍観者が示唆しているように、私はhttp://en.wikipedia.org/wiki/Jargonの案内を受けようとしています。 – chaos
コンピュータ用語は外部から専門用語と呼ばれることがありますが、ここではすべてのソフトウェア専門家がいます。これは専門用語ではありません。そうでなければほとんどすべての記事は専門用語 –