我们正在制作一个依赖于机器的应用程序。
现在我们在多台客户端机器上部署我们的应用程序,但问题是每个客户端都有来自不同供应商的数据库。SQL Server
目前我们正面临和之间的冲突Oracle
。
我们的应用程序建立在Oracle
数据库上,现在我们要访问SQL Server
。有什么办法可以做到,因为我对数据库不太感兴趣,我不想更改不同数据库的查询和配置设置。
3 回答
您需要的是提供一个提供数据库独立性的层的东西。有多种方法可以做到这一点。
您可以使用 ORM(对象关系映射)技术,例如 JPA(Hibernate 是主要示例)。典型的 JPA 实现具有适用于一系列不同数据库的后端。
您可以通过(粗略地说)在不同 SQL 方言之间映射 SQL 语句来使用支持数据库独立性的现有产品。
有些人建议使用 ODBC。
您可以为每个后端数据库实现具有不同 DAO 实现类的 DAO API。如果您尽可能地坚持符合 SQL-92 的 DDL 和 DML,那么很有可能在 DAO 实现之间会有很多共性。(JDBC 在 API 级别提供数据库独立性,前提是您不使用特定于供应商的扩展。我记得 Oracle 的 JDBC 驱动程序以非标准方式做事时遇到问题……但他们现在可能已经一起行动了。)
...我不想更改不同数据库的查询和配置设置。
如果您使用 ORM 及其查询语言,则不必这样做。如果您使用 SQL 和 JDBC 实现数据库,则主要是分别坚持 SQL 标准和标准 JDBC API 方法。
相关问题:
推荐的方法是使用像 Hibernate 这样的 ORM 工具。如果这是不可能的,那么使用 StoredProcedures(确保它只使用普通的 PL SQL 而没有数据库特定的功能)进行数据库操作
如有必要,创建链接服务器并使用 openquery。