【问题标题】:MySQL implementation of connection poolsMySQL 连接池的实现
【发布时间】:2014-12-12 12:46:43
【问题描述】:

MySQL jdbc 驱动程序是否内置了对数据库连接池的支持? (就像 Oracle 有 OracleDataSource 类)

我进行了彻底的搜索,但找不到任何东西。我知道我可以使用外部库,例如 dbcp 或 boneCp,并且应用程序服务器(例如 tomcat 和 jboss)也支持连接池。

但我很想知道 MySQL 是否有自己的连接池实现。

提前致谢。

【问题讨论】:

    标签: java mysql jdbc


    【解决方案1】:

    JDBC specification(参见第 68 页)支持连接池,因此任何现代驱动程序都具有该功能。但是,JDBC 驱动程序的目的不是维护它们自己的连接池。所以无论你使用MySQL Connector/J还是Oracle驱动,你仍然需要应用服务器或者第三方库提供的连接池实现。

    除非你当然想试试rolling your own。 o.O

    相关的JDBC接口是javax.sql.ConnectionPoolDataSourcejavax.sql.PooledConnection

    latest MySql driver中,对应的实现类是MysqlConnectionPoolDataSourceMysqlPooledConnection(都在包com.mysql.jdbc.jdbc2.optional中)。您可能会发现 these code examples 很有趣 - 他们使用一个名为 MiniConnectionPoolManager 的类作为连接池实现。

    【讨论】:

    • A ConnectionPoolDataSource 不是连接池(尽管有些驱动程序错误地将其实现为连接池);它是连接池使用的数据源
    • 谢谢@gknicker。但我很困惑......你能澄清最后一段的意思吗
    • @Sachini 我试图合并来自 Mark Rotteveel 的警告评论。我现在已经澄清了。
    • @gknicker MiniConnectionPoolManager 不是在 JDBC 驱动程序中吗? (我发现它here)所以我会得出结论,MySQL JDBC 驱动程序没有像 Oracle 这样的内置连接池实现。如果我错了,请纠正我:) 谢谢
    • 没错。老实说,我不认为 OracleDataSource 有自己的连接池实现,但我现在明白了。
    猜你喜欢
    • 2020-11-01
    • 1970-01-01
    • 2012-05-18
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 2013-08-20
    相关资源
    最近更新 更多