私は次のような問題があります。私たちはプログラムが動作するいくつかの異なるデータベースを持っているので、コンパイル時には正確なデータベース構造は不明です。ここでは、いくつかのSQL言語に翻訳されたクエリオブジェクトを作成し、明示的なクエリ文字列を与えるライブラリを探しています。SQLクエリを構築するための実行時定義テーブルを持つORMのようなJavaライブラリがありますか?
Hibernateなどの通常のORM-Librariesと同様のものを検索します。私たちはそれらのいくつかを調べましたが、テーブルとカラム以外のすべてがコンパイル時に通常の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として処理できる必要があります。しかし、それはあまり期待できないでしょう;-)
CriteriaAPI? – Darwly