次の問題があります。プログラムが実行されるデータベースがいくつかあるため、コンパイル時に正確なデータベース構造が不明になります。現在、クエリオブジェクトを作成できるライブラリを探しています。このライブラリは、複数のSQL方言に変換でき、プレーンなクエリ文字列を提供します。
Hibernateなどの通常のORMライブラリに似たものを検索します。それらのいくつかを調べましたが、コンパイル時に通常のjavaクラスとして定義されるテーブルと列を除いてすべてのようです。私がこれについて間違っているなら、私を訂正してください。
ORMアプローチと私たちのアプローチの基本的な違いは、javaオブジェクトをデータベースに格納するのではなく、クエリをjavaオブジェクトとして生成することです。私の主張をより明確にするために、ライブラリによって実行可能であるはずのサンプルコードをいくつか示します。
QueryObject query = new QueryObject();
query.addSelectedTable("customers");
query.addSelectedColumn("customerID");
query.addSelectedColumn("firstname");
query.addCondition("age < 20");
query.addLimit(10);
System.out.println(query.toMySQL());
//prints SELECT customerID, firstname FROM customers WHERE age < 20 LIMIT 10;
そのような図書館が存在するかどうかはわかりませんが、知っていれば喜んで知っていただければ幸いです。
さらに要求を厳しくするために、他にもいくつかの機能があり、それは素晴らしいことです。たとえば、サブクエリやその他のクエリタイプをSELECTとして処理できる必要があります。しかし、それは期待するには多すぎるでしょう;-)