ORMとSQLプログラミングの間の一見永遠の闘争の中で、疑問が生じます。なぜ両方を使用しないのですか?ほとんどのプログラミングにORMを使用し、選択したORMでは実行できないより複雑なJOINクエリやその他の複雑なクエリに対して独自のSQLクエリをプログラミングします。そうしない正当な理由はありますか?
2 に答える
ほとんどの場合、ORMで生成されたSQLは最適化されていません。
パフォーマンスが重要な場合は、バインディングにのみORMを使用し、すべてのクエリにユーザー定義SQLを使用することをお勧めします。
ほとんどの ORM ソリューションは、Hibernateなどのネイティブ SQL をサポートしています。
この 2 つを組み合わせない理由は、一貫性のためです。データベースからデータを取得し、アプリケーションでオブジェクトに変換する 2 つの方法を理解しなければならない場合、覚えておくべきことが 2 倍になり、バグが発生する可能性が 2 倍になります。 2 倍のテストを行う必要があります (「データベースに接続してデータを取得する」コードの場合)。
実際には、ORM に慣れていない開発者はネイティブ SQL を使用する傾向があり、ORM ツールが好きな開発者は ORM レイヤーを使用してほとんどすべてを行うため、コードベースの保守と拡張が難しくなります。
これを行う場合は、少なくとも「JDBC (またはその他のもの) を介して直接ではなく、ORM ツールを介して SQL を実行する」ルールを強制します。これにより、少なくともある程度の一貫性が得られ、多くのオブジェクト マッピング機能。
ただし、理想的には、解決策を選択してそれに固執することです。賭けをヘッジすることはめったに無料ではありません。