【发布时间】:2014-12-12 12:46:43
【问题描述】:
MySQL jdbc 驱动程序是否内置了对数据库连接池的支持? (就像 Oracle 有 OracleDataSource 类)
我进行了彻底的搜索,但找不到任何东西。我知道我可以使用外部库,例如 dbcp 或 boneCp,并且应用程序服务器(例如 tomcat 和 jboss)也支持连接池。
但我很想知道 MySQL 是否有自己的连接池实现。
提前致谢。
【问题讨论】:
MySQL jdbc 驱动程序是否内置了对数据库连接池的支持? (就像 Oracle 有 OracleDataSource 类)
我进行了彻底的搜索,但找不到任何东西。我知道我可以使用外部库,例如 dbcp 或 boneCp,并且应用程序服务器(例如 tomcat 和 jboss)也支持连接池。
但我很想知道 MySQL 是否有自己的连接池实现。
提前致谢。
【问题讨论】:
JDBC specification(参见第 68 页)支持连接池,因此任何现代驱动程序都具有该功能。但是,JDBC 驱动程序的目的不是维护它们自己的连接池。所以无论你使用MySQL Connector/J还是Oracle驱动,你仍然需要应用服务器或者第三方库提供的连接池实现。
除非你当然想试试rolling your own。 o.O
相关的JDBC接口是javax.sql.ConnectionPoolDataSource和javax.sql.PooledConnection。
在latest MySql driver中,对应的实现类是MysqlConnectionPoolDataSource和MysqlPooledConnection(都在包com.mysql.jdbc.jdbc2.optional中)。您可能会发现 these code examples 很有趣 - 他们使用一个名为 MiniConnectionPoolManager 的类作为连接池实现。
【讨论】:
ConnectionPoolDataSource 不是连接池(尽管有些驱动程序错误地将其实现为连接池);它是连接池使用的数据源。
MiniConnectionPoolManager 不是在 JDBC 驱动程序中吗? (我发现它here)所以我会得出结论,MySQL JDBC 驱动程序没有像 Oracle 这样的内置连接池实现。如果我错了,请纠正我:) 谢谢