java - 是否有一个类似 ORM 的 java 库,带有运行时定义的表来构建 sql 查询?

标签 java sql hibernate orm

我有以下问题:我们的程序运行在几个不同的数据库上,因此在编译时确切的数据库结构是未知的。我们现在正在寻找一个库,它允许我们构建查询对象,可以将其转换为几种 SQL 方言,并为我们提供一个简单的查询字符串。

我们搜索类似于常规 ORM 库(例如 Hibernate)的内容。我们已经研究了其中的一些,但似乎除了表和列之外的所有它们都在编译时定义为常规 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 一样处理子查询和其他查询类型。但这就太令人期待了;-)

最佳答案

您查看了吗Squiggle-SQL

关于java - 是否有一个类似 ORM 的 java 库,带有运行时定义的表来构建 sql 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10330516/

相关文章:

java - 我正在向 JTable 添加一个空行(实现 AbstractTableModel)。如何实时更新我的​​模型?

python - 有没有办法在 Redshift 中使用 CONCAT(table_name(col1, col2, col3,.....)) 连接可变数量的列?

java - Wicket 测试 - AnnotApplicationContextMock - 没有应用程序附加到当前线程主线程

java - Hibernate 持久化对象成员

java - 为什么带有可变参数的 Java 方法被识别为 transient ?

java - Guava 缓存是否考虑驱逐选择的权重?

sql - 有没有办法减少我的 SQL 查询的大小?

sql - 无重复数组组合

java - 克服 Hibernate 中的延迟加载问题,多对多关系

java - Java 是 "pass-by-reference"还是 "pass-by-value"?