关于Java:JTDS驱动程序-连接池与连接池

JTDS driver - Connection pooling vs Connection pool

我离开Java EE已有一段时间了,但是我对所有这些东西都有基本的了解。

我在这里阅读JTDS文档:

http://jtds.sourceforge.net/features.html

它说它提供语句池和连接池,但不提供连接池实现。

  • 假设JTDS驱动程序本身提供了连接池,
    那为什么我需要一个连接池(如DBCP)呢?
  • 换句话说,该连接之间有什么区别
    JTDS提供的池和功能齐全的连接池
    实施(在此JTDS文档页面的意义上)
    呢?
  • 另外,语句池和连接池有什么区别
    (如该JTDS文档页面上所述)?
  • 随时为您的答案添加更多详细信息
    (无论您发现什么重要的内容;我没有明确询问过的事情)
    因为我对此很困惑。


    据我从API文档得知,它们意味着jTDS提供了javax.sql.PooledConnectionjavax.sql.ConnectionPoolDataSource实现。这些类将由(例如)Java EE应用程序服务器的连接池使用,而不是连接池本身。

    ConnectionPoolDataSource创建PooledConnection对象,换句话说,它是连接池的数据源。 PooledConnection是物理连接的句柄,并保存在连接池中。当用户从池中请求连接时,连接池将PooledConnection从\\'available \\'移至\\'in use \\'列表,并从PooledConnection获取逻辑java.sql.Connection。该逻辑连接就是传递给用户的内容。

    连接池可以使用PooledConnection来监视逻辑连接。例如,在调用close()时将PooledConnection返回到\\'available \\',或强行取消逻辑连接并使该逻辑连接无效(例如,如果使用时间过长)。

    因此,jTDS本身没有连接池实现,但是它支持连接池。不幸的是,JDBC规范中的措辞如此混乱。

    关于这个问题,我有一个更详细的答案。