我们正在制作一个依赖于机器的应用程序。
现在我们将应用程序部署在多台客户端计算机上,但问题是每个客户端都有来自不同供应商的数据库。目前我们正面临 SQL Server
和 Oracle
之间的冲突。
我们的应用程序构建在 Oracle
数据库上,现在我们想要访问 SQL Server
。有什么办法可以做到这一点,因为我对数据库不太专业,而且我不想更改不同数据库的查询和配置设置。
最佳答案
您需要的是提供一个提供数据库独立性的层。有多种方法可以做到这一点。
您可以使用 ORM(对象关系映射)技术,例如 JPA(以 Hibernate 为例)。典型的 JPA 实现具有一系列不同数据库的后端。
您可以通过(粗略地说)在不同 SQL 方言之间映射 SQL 语句来使用支持数据库独立性的现有产品。
有些人建议使用 ODBC。
您可以为每个后端数据库使用不同的 DAO 实现类来实现 DAO API。如果您尽可能坚持遵守 SQL-92 的 DDL 和 DML,那么 DAO 实现之间很可能会有很多共同点。 (JDBC 在 API 级别提供数据库独立性,前提是您不使用供应商特定的扩展。我记得 Oracle 的 JDBC 驱动程序以非标准方式执行操作时遇到问题......但它们现在可能已经齐心协力了。)
... I dont want to change the queries and configuration settings for different databases.
如果您使用 ORM 及其查询语言,则不必这样做。如果您使用 SQL 和 JDBC 实现数据库内容,那么很大程度上是分别坚持 SQL 标准和标准 JDBC API 方法的问题。
相关问题:
关于java - Oracle 和 MS SQL Server 之间的桥梁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15783472/