JTDS驱动程序 - 连接池与连接池

时间:2015-01-15 18:23:30

标签: java java-ee jdbc jtds apache-commons-dbcp

我已经离Java EE有一段时间了,但我对所有这些东西都有一个基本的想法。

我正在阅读JTDS文档:

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

它说它提供了语句池和连接池,但没有提供连接池实现。

  1. 如果JTDS驱动程序本身提供连接池, 那为什么我需要一个连接池(如DBCP)呢?
  2. 换句话说,该连接之间有什么区别 由JTDS提供的池和一个完整的连接池 实现(在此JTDS文档页面的意义上) 它?
  3. 此外,语句和连接池之间的区别是什么 (如此JTDS文档页面中所述)?
  4. 随意在答案中添加更多详细信息 (无论你发现什么重要;我没有明确要求的事情)
    因为我对此很困惑。

1 个答案:

答案 0 :(得分:6)

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

ConnectionPoolDataSource创建PooledConnection个对象,换句话说,它是连接池的数据源PooledConnection是物理连接的句柄,并保存在连接池中。当用户从池请求连接时,连接池会将PooledConnection从“可用”移动到“正在使用”列表,并从java.sql.Connection获取逻辑PooledConnection 。这种逻辑连接是交给用户的。

连接池可以使用PooledConnection来监视逻辑连接。例如,在调用PooledConnection时将close()返回到'available',或强制撤销逻辑连接并使其无效(例如,如果它使用的时间太长)。

因此jTDS本身没有连接池实现,但它支持连接池。遗憾的是,JDBC规范中的措辞令人困惑。

我在a similar question上有关于这个主题的更详细的答案。