ORM や動的 SQL ビルダーを使用したくありません。必要なのは、名前付きパラメーターを使用してプリペアド ステートメントを作成できるクラスだけです。または、少なくとも、異なるデータ型のパラメーターのパラメーター プレースホルダーを安全に置き換えます。
編集: JDBC が名前付きパラメーターをサポートしていないことは知っています。そこで、図書館について質問です。
ORM や動的 SQL ビルダーを使用したくありません。必要なのは、名前付きパラメーターを使用してプリペアド ステートメントを作成できるクラスだけです。または、少なくとも、異なるデータ型のパラメーターのパラメーター プレースホルダーを安全に置き換えます。
編集: JDBC が名前付きパラメーターをサポートしていないことは知っています。そこで、図書館について質問です。
私の知る限り、JDBC は名前付きパラメーターを使用しませんが、位置パラメーター用のライブラリはまったく必要ありません。これは、「さまざまなデータ型のパラメーターのパラメーター プレースホルダーを安全に置き換える」のに十分です。
PrepareStatement statement = connection.prepareStatement
("SELECT Foo FROM Bar WHERE Baz = ?");
try {
statement.setString(1, "John O'Reilly"); // No problem with quote here
ResultSet results = statement.executeQuery();
...
} finally {
statement.close();
}
詳細については、準備済みステートメントに関する JDBC チュートリアルを参照してください。
編集:名前付きパラメーターのようなものを本当に使用したい場合、およびSQL自体を制御している場合(他の場所では使用されないフォームを使用するようにすることができます)、独自のクエリトランスレータをかなり簡単に作成できます:
TranslatedQuery
次のようなインスタンス(これが新しいクラスです)を作成します"SELECT Foo FROM Bar WHERE Baz = @Baz"
?
クラスをテストで完成させるのに数時間以上かかることはありません。実際に JDBC に触れる必要はありません。