最近、ビジネスオブジェクト/エンティティをデータベースに保存するのに何がうまくいくのか疑問に思っています。議論の目的で、いくつかのアイテム(顧客の詳細、名前、数量、価格など)を含む注文の例を考えてみましょう。SQL ServerとC#を使用しており、古いプロジェクト用にいくつかのレガシーASP Classic / Jscriptがあり、NoSQLタイプのソリューションなどに移行する機会はありません。
私が知っているおおよそ3つの方法があります
サーバー側でアドホックSQLクエリを作成します(サーバー側の言語を変更した場合は、このコードをすべて再作成する必要があります)
注文のXML表現を受け入れるストアドプロシージャを使用すると、ストアドプロシージャがドキュメントを読み取り、必要な処理を実行します。(これは私たちが今まで使ってきた方法です)
ある種のORMテクノロジーを使用します(一部の人はそれを誓いますが、それが私たちが行きたい道であるかどうかを正確に判断するのに十分な経験がなく、周りに十分なおしゃべりがあるので、それを避けたいと思いますKISSの哲学を採用して、他のすべてが進行中であることを考えると、パフォーマンスの問題と複雑さをコミットするのに少し神経質になっています)
私が知りたいのは:
上記のリストにない、調査できる他の/より良いアプローチがあるかどうか
XMLメソッドが標準/グッドプラクティスであるかどうか。ほとんどの言語がXMLへのシリアル化をサポートしているため、Webに対応し、デバッグ中に読みやすく、非常に柔軟です(拡張が簡単で、スキーマなどを介して強さまたは弱さを選択できます)が、他のアイデアを検討する機会があります。
注:SQL Server 2008のストアドプロシージャでOPENXMLを使用する-INSERTの順序はXMLドキュメントとは異なり、いくつかの点で関連しているようです。これまでopenxml()を使用してきたので、XMLメソッドが妥当な方法であるかどうかを尋ねる質問があると思いますが、XQueryの方が優れたアプローチですか?柔軟性、読みやすさなどの観点から、この方法で物事を行うための本当に最良の方法について誰かが指摘できる便利なリファレンス/投稿はありますか?
編集:返信してくれてありがとう。これが閉じられたとしても、私は応答します(StackOverflowで議論が冗長になっている理由はまだはっきりしていません)。しばらくお待ちいただきましたことをお詫び申し上げます。
私はおそらく明確にする必要があります。XMLが役立つことがわかったのは、いくつかの小さなビジネスオブジェクトで構成される「複雑な」オブジェクトがある場合です。たとえば、「アイテム」を含む注文。アイテムの数が1つ以上ある場合があります。注文を読み込んでから、ユーザーが注文にアイテムを追加した場合、別のアイテムを追加し、XMLにシリアル化してから、それが挿入か更新かを判断できるストアドプロシージャに渡しますが、私はそうではありません。それ以外の方法でそれを行う方法を確認してください(私が避けたい多くの小さなストアドプロシージャ/アドホックSQLは別として。ORM:以下のコメントを参照してください)。行の挿入/更新に相当するフラットな構造を扱っている場合は、厳密に型指定されたパラメーターを使用した通常のストアドプロシージャが適切に機能します。
ORMに関するその他のコメントについては、マーティン・ファウラーの作品へのリンクは興味深いものでした。私はしばらく前に元のhttp://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspxを読みましたが、常により多くの情報に感謝しています。現時点でのORMに関する私の主な関心事は、ORMの使用方法を学ぶことの複雑さであり、現在使用している環境を考えると、ORMをうまく使用すること(落とし穴などを回避することなど)は、処理するのが少し難しいように見えます。
しかし、返信に感謝します。私たちが見逃したかもしれない他のアプローチがあるかどうかを見たかっただけです。ORMは、しばらく投資する価値のあるもののようです。
再度、感謝します。
-マーシン