java - 使用 JDBC 连接到不同数据库的模式

标签 java jdbc

我正在编写一个应用程序,它必须是可配置的,以便根据客户的想法连接到 Oracle、SQL Server 和 MySQL。

到目前为止,我一直在计划使用 JDBC-ODBC 桥,并且只是使用不同的连接字符串连接到数据库。

有人告诉我这不是很有效。

  1. 是否存在连接到多个数据库系统的模式或最佳实践?或者用于选择要使用的驱动程序?

  2. 我应该配置它吗?但包括所有三个驱动程序或构建三个单独的客户端?

我没有做任何复杂的事情,只是将数据从事件流中抽取(插入)到数据库中。

最佳答案

我建议您使其可配置并包括三个驱动程序。您可以使用这样的模式:创建一个提供连接到数据库的功能的父类(super class)(我们称之为 DAO)。这可能是抽象的。

为您希望连接的每种类型的数据库创建一个具体的子类。所以你最终可能会得到 MySQLDAO、MSSQLDAO 和 OracleDAO。每个都将加载各自的驱动程序并使用其各自的连接字符串。

使用方法 getDAO(DB) 创建另一个类(我们称之为 DAOFactory),该方法将根据 DB 的值创建 DAO 的实例。

例如(在伪代码中):

 if(DB.equals("MySQL")){
    DAO = new MySQLDAO();
}
return DAO;

因此任何需要连接到数据库的代码都会调用 DAOFactory 并请求一个 DAO 实例。您可以将 DB 值存储在外部文件(如属性文件)中,这样您就不必修改代码来更改数据库类型。

这样你的代码就不需要知道它连接的是哪种类型的数据库,如果你以后决定支持第四种类型的数据库,你将不得不再添加一个类并修改 DAOFactory,而不是其余的你的代码。

关于java - 使用 JDBC 连接到不同数据库的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/295629/

相关文章:

java - 在 TreeTableView 中添加进度条(将 Double 值返回到 Observable<Double>)

java - 错误: incompatible types: void cannot be converted to NumPal

Java 拆分路径..?

java - 用于删除从文本字段中获取的值的 SQL 命令

Java ResultSet getString 怪异?

java - 正确调用不同类中的方法 | java

java - 获取 SWT 文本小部件中各个字符的 x,y 坐标

java - JDBC setMaxRows 数据库使用

java - 当我们可以在 Restful 服务中使用 jsonObject 时,为什么还需要 POJO

java - 使用 Oracle Wallet 的 Tomcat 8 JNDI 和 Oracle