Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用不同关系数据库的Java程序_Java_Mysql_Sql Server_Database_Oracle - Fatal编程技术网

使用不同关系数据库的Java程序

使用不同关系数据库的Java程序,java,mysql,sql-server,database,oracle,Java,Mysql,Sql Server,Database,Oracle,我有一个大致的问题。有没有可能有一个java程序与用户在应用程序设置中指定的数据库类型一起工作。这意味着,根据应用程序运行的服务器和数据库服务器的运行类型,应用程序必须调整自身以运行其查询。 我必须为不同类型的数据库指定不同的查询吗?可能吗?当然 通常,如果您确实需要数据库独立性,那么您可以编写应用程序,利用独立于数据库的框架来处理持久化数据并从相关数据库中检索数据。例如,Hibernate知道如何构造针对Oracle的查询,以及如何生成针对SQL Server、MySQL等执行相同操作的不同查

我有一个大致的问题。有没有可能有一个java程序与用户在应用程序设置中指定的数据库类型一起工作。这意味着,根据应用程序运行的服务器和数据库服务器的运行类型,应用程序必须调整自身以运行其查询。 我必须为不同类型的数据库指定不同的查询吗?

可能吗?当然

通常,如果您确实需要数据库独立性,那么您可以编写应用程序,利用独立于数据库的框架来处理持久化数据并从相关数据库中检索数据。例如,Hibernate知道如何构造针对Oracle的查询,以及如何生成针对SQL Server、MySQL等执行相同操作的不同查询


当然,构建完全独立于数据库的应用程序会带来其他问题。例如,不同的数据库处理锁定的方式不同——SQL Server中的简单选择将锁定行,而Oracle中则不会这样做。这可能会导致应用程序的行为因数据库而异。此外,完全独立于数据库的应用程序通常不能像利用特定数据库独特功能的应用程序那样进行扩展—像Hibernate这样的框架不会针对任何特定数据库生成对特定应用程序最有效的SQL。当然,它会针对每个数据库生成一般合理的SQL,但了解业务需求和特定数据库的人几乎肯定可以做得更好。

是的,这是可能的。向您希望用户使用的数据库添加支持。并基于从用户直接到所选数据库连接器的选择。我同意Justin的观点。在我看来,除非您有最简单的应用程序,否则尝试实现数据库中立性是一件愚蠢的事情。