Mysql

MySQL Connector/J 8 中 JDBC DataSource 的實現

  • July 12, 2020

在 MySQL 連接器/J 8.0開發人員指南( MySQL 的JDBC 驅動程序)中,我沒有發現任何提及DataSourceJDBC 中介面的實現。

引用DataSourceJavadoc:

DriverManager作為設施的替代方案,對像是DataSource獲得連接的首選方式。

所以我希望連接器/J 提供一個實現。例如,對於這個 Postgres JDBC 驅動程序DataSource,我可以在類中找到 的實現PGSimpleDataSource,如Stack Overflow 上所討論的

➥ 沒有DataSourcefor Connector/J的實現嗎?還是我錯過了?

有這個頁面,6.1 Driver/Datasource Class Name。但是,儘管有標題,但只提到了驅動程序類名,而不是實現的類名DataSource

驅動程序有com.mysql.cj.jdbc.MysqlDataSource(也有一個ConnectionPoolDataSource和一個XADataSource實現)。實際實現MysqlDataSource直接使用 JDBC 驅動程序,類似於將DriverManager要執行的操作。

MySQL Connector/J 幾乎沒有提到數據源。事實上,我能找到的唯一參考資料MysqlDataSource是在連接器/J API 的更改中。我不確定這是否是 MySQL 文件團隊有意識的選擇,但MysqlDataSource直接在您的程式碼中使用通常沒有什麼意義(它不提供連接池),並且MysqlConnectionPoolDataSourceMysqlXADataSource直接使用,也不是連接池(相反,它們充當提供連接池和/或分佈式事務的 Java EE 數據源的連接工廠)。

使用 JDBC 的許多方法涉及使用提供連接池的第三方數據源(例如 HikariCP、DBCP、c3p0),而那些通常DriverManager直接使用(儘管有些還允許您提供數據源實現)或通過數據源JavaEE/JakartaEE 應用程序伺服器。使用這些通常比依賴驅動程序的數據源實現更好。

引用自:https://dba.stackexchange.com/questions/270786