オブジェクト指向言語でSQLを操作するのが面倒なことの1つは、SQLステートメントを文字列で定義する必要があることです。
私がIBMメインフレームで作業していたとき、言語はSQLプリプロセッサを使用してネイティブコードからSQLステートメントを解析したため、ステートメントは文字列を難読化せずにクリアテキストSQLで記述できました。たとえば、COBOLにはEXECSQLがあります。 ...END-純粋なSQLステートメントをCobolコードに埋め込むことができるEXEC構文構造。
<pure cobol code, including assignment of value
to local variable HOSTVARIABLE>
EXEC SQL
SELECT COL_A, COL_B, COL_C
INTO :COLA, :COLB, :COLC
FROM TAB_A
WHERE COL_D = :HOSTVARIABLE
END_EXEC
<more cobol code, variables COLA, COLB, COLC have been set>
...これにより、SQLステートメントが非常に読みやすくなり、エラーをチェックできます。EXEC SQL .... END-EXECトークンの間には、インデントや改行などの制約がないため、好みに応じてSQLステートメントをフォーマットできます。
この例は単一行の選択用であり、複数行の結果セットが予想される場合、コーディングは異なります(ただし、v。読みやすい)。
したがって、Javaを例にとると
「古いCOBOL」アプローチを望ましくないものにした理由は何ですか?SQLだけでなく、このアプローチを使用すると、システムコールをはるかに読みやすくすることができます。それを組み込み外国語プリプロセッサアプローチと呼びましょう。
SQL用の組み込み外国語プリプロセッサは実装に役立ちますか?Javaコード内にネイティブSQLステートメントを記述できることの利点はありますか?
編集
私は、オブジェクト指向言語のSQLが先祖返りだと思うかどうか、そしてそうでない場合は、それを改善するために何ができるかを本当に尋ねています。