私は、比較的複雑ですが標準的なデータベース関係を持つWebアプリを作成しています。 python/Ruby/phpなどでORMを使用すると、通常、多くのクエリが生成されることに気づきました。これは明白であると述べています。 ORMは通常、ジョブを完了するために必要な数よりも多くのクエリを作成します。彼らは完璧ではありません。
これらのクエリは自分で作成できます。これは古い学校のようですが、アプリはおそらくより高速に実行され、ORMをいじる必要はありません。代わりに、SQLをいじくります。言語固有/バージョン固有のライブラリーではなく、SQLをいじくり回します。
私はORMを恐れていません。過去に大成功を収めてきました。
人々が一般に(マクロレベルで)生のSQLクエリをサポートするためにコードをどのように編成するのか疑問に思っています。
たとえば、アプリケーションでアーキテクチャーのようなMVCを使用するとします。
SQLコマンドはどこに置くべきですか?私はそれがずさんなコードやマイルのSQLクエリを持つモデルのレシピであると想像できます。また、デフォルトのソートなどを追加することもできなくなります。そして、再びORMに戻ります。
これについて考えたら、クエリを含む各モデルのSQLヘルパーを作成することができます。他の方法があるのだろうか
私たちのチームでは、専用の データアクセスオブジェクト を使用して、DBアクセスコードを配置し、実際のSQLコードをストアドプロシージャに格納しています。
古臭く聞こえるかもしれませんが、実際に試されました。特定のチームメンバーの主張に基づいてORMフレームワークを評価したところ、非常に簡単なコードパスでN + 1選択の問題が見つかりました。私たちのチームにはSQLの専門知識があるため、あなたと同じ決定をしました。
DAOは痛い音?ボイラープレートがたくさん?シンプルでクリーンな状態を保つために、以下を使用しています。