【发布时间】:2014-04-20 05:48:57
【问题描述】:
Oracle 的 JDBC 文档说驱动提供者应该实现 DataSource 接口,但在实际项目源文件中,我总是看到 DataSource 来自 3rd,例如 DBCP 连接池。
不知道MySQL驱动本身是否实现了DataSource接口?
【问题讨论】:
Oracle 的 JDBC 文档说驱动提供者应该实现 DataSource 接口,但在实际项目源文件中,我总是看到 DataSource 来自 3rd,例如 DBCP 连接池。
不知道MySQL驱动本身是否实现了DataSource接口?
【问题讨论】:
如果您在谈论Connector/J,它提供:
com.mysql.jdbc.jdbc2.optional.MysqlDataSource(实现DataSource),com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource(实现ConnectionPoolDataSource)com.mysql.jdbc.jdbc2.optional.MysqlXADataSource(实现XADataSource)所以,就您的问题而言。 是 Connector/J 提供DataSource 接口的实现并符合 JDBC 规范。
但是,正如您从您的问题和@Piotr 的回答中知道的那样,大多数应用程序永远不会直接处理这些实现。至少在作为 Java 开发人员的十年中,我从未这样做过。让 Java EE App Server 为您处理连接,或者如果您需要独立应用程序,则安装第三方连接池。
【讨论】:
您可以使用 JDBC 驱动程序提供的原生 DataSource,但您通常会使用 DBCP、C3P0 或 BoneCP 等连接池。
【讨论】:
com.mysql.jdbc.jdbc2.optional.MysqlDataSource 或com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource 见the docs