如何编写SQL,使其可以在任何数据库上运行

时间:2018-11-19 11:51:12

标签: java sql database oracle hibernate

我必须编写一个将生成SQL的应用程序(在服务器1中)。 SQL将被传输到其他服务器(服务器2)。部署在服务器2上的另一个应用程序将在服务器2上部署的数据库上运行查询。

现在可以有不同类型的数据库,查询将不是一个简单的数据库(可能是200行查询)。我可以用来创建查询的任何第三方应用程序(例如Hibernate)可能具有不同的格式(例如HQL),可以转移到服务器2,服务器2上的应用程序会将其转换为特定于数据库的SQL并运行它?

我正在使用Spring&Java 8编写应用程序。

谢谢。

2 个答案:

答案 0 :(得分:1)

本地SQL查询是不可能的。但是,如果您使用诸如Hibernate之类的任何ORM技术,则有可能。 Hibernate dailect将为您生成不同的数据库特定查询。尽管休眠是一种ORM技术,但它会定义与代表数据库表的对象的关系。通常,我们称这些对象为实体。因此,如果您要使用其他数据库,则不会有问题。但是您必须为不同的数据库更改dailelect。

答案 1 :(得分:1)

为什么不使用ORM-JPA或Hibernate并将查询移动到适用于每个平台/数据库的可配置的不同XML?部署基于数据库的XML ...

这里没有捷径,但是如果您使用ANSI SQL标准,而该标准与平台无关,并且被大多数数据库系统(包括Microsoft SQL Server,Oracle,MySQL,IBM DB2等)用作基础,则查询应该几乎没有任何问题。显然,您将失去数据库提供的附加功能。