我有一个一般性的问题。是否有一个Java程序可以与用户在应用程序设置中指定的数据库类型一起使用。这意味着,取决于应用程序运行所在的服务器以及数据库服务器运行的类型,应用程序必须调整自身以运行其查询。
是否必须为不同类型的数据库指定不同的查询?
最佳答案
可能吗?当然。
通常,如果确实需要数据库独立性,则可以利用与数据库无关的框架来编写应用程序,以处理持久性数据并从相关数据库中检索数据。例如,像Hibernate之类的人知道如何构造针对Oracle的查询,以及如何生成针对SQL Server,MySQL等执行相同操作的不同查询。
当然,构建完全独立于数据库的应用程序会带来其他问题。例如,不同的数据库处理锁定的方式有所不同-SQL Server中的简单SELECT
将锁定行,而Oracle中则不会。这可能会导致您的应用程序根据数据库的行为有所不同。此外,完全独立于数据库的应用程序通常无法像利用特定数据库独特功能的应用程序那样扩展—像Hibernate这样的框架不会针对特定数据库针对特定应用程序生成最有效的SQL。当然,它会针对每个数据库生成通常合理的SQL,但是了解业务需求和特定数据库的人员几乎可以肯定会做得更好。