2017-02-06 61 views
-1

我在Java应用程序中需要某种数据库抽象。我拥有包含所有属性和内部应用程序数据的mySQL数据库,第二个用于结果数据。我需要创建新表并填充它们。棘手的部分是每个应用程序的第二个数据库可能不同,所以它可以是Oracle DB或PostgreSQL。有谁知道某种工具可以让我编写一个版本的SQL,它会将其转换为特定的DB方言吗?休眠或弹簧数据可以帮助我吗? 谢谢你的答案数据库抽象

编辑 我需要执行不涉及任何对象查询,只需创建表与动态生成的名称

回答

-1

当然Hibernate(或任何其他JPA [1]实现)将帮助你。 JPA是一种API,它允许您将Java bean映射到抽象逻辑中的数据库表行,其中甚至可能根本不涉及SQL。

JPA有它自己的JPQL [2](类似于SQL的面向对象的查询语言),它将转换为您正在使用的实际数据库的特定方言;它有一个Criteria API [3],它可以让你使用类型安全的方法调用从数据库中查询和检索数据。

  1. https://en.wikibooks.org/wiki/Java_Persistence/What_is_JPA%3F
  2. https://en.wikipedia.org/wiki/Java_Persistence_Query_Language
  3. https://en.wikibooks.org/wiki/Java_Persistence/Criteria
+0

但我可以创建与任何对象无关的查询吗? –

+0

是的,您可以使用JPQL来封闭与对象无关的查询,例如聚合('count','group by'等)。 –

+0

谢谢,这就是我一直在寻找的 –

-1

当然Hibernate可以帮助你这一点。最好的部分是,你甚至不必编写SQL查询(HQL或Criteria将完成你的工作)。唯一的问题是你必须在更改数据库实例时更改数据库详细信息(如驱动程序类,驱动程序和方言等,以建立连接)。

+0

@Wojciech Bugaj你还需要将数据库复制到不同的数据库服务器(如备份和恢复)?你想要做什么确切的操作?多解释一下,这样它会更容易回答。 – ashishakp

+0

但我可以创建与任何对象无关的查询吗? –