我有以下问题:我们有几个不同的数据库运行我们的程序,所以在编译时确切的数据库结构是未知的。我们现在正在寻找一个允许我们构建查询对象的库,它可以被翻译成几种 SQL 方言并给我们一个普通的查询字符串。
我们搜索类似于常规 ORM 库的东西,例如 Hibernate。我们已经研究了其中的一些,但似乎除了表和列之外的所有这些都在编译时定义为常规的 java 类。如果我在这方面错了,请纠正我。
ORM 方法与我们的方法之间的基本区别在于,我们不想将 java-objects 存储在数据库中,而是将查询生成为 java-objects。为了更清楚地说明我的观点,我将向您展示一些示例代码,这些代码应该可由库执行。
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 来处理。但这太过分了;-)