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

pet*_*rov 3 java jtds jdbc java-ee apache-commons-dbcp

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

我在这里阅读JTDS文档:

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

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

  1. 如果JTDS驱动程序本身提供连接池,那为什么我需要一个连接池(如DBCP)呢?
  2. 换句话说,JTDS提供的连接池与完整的连接池实现(在此JTDS文档页面意义上)之间有什么区别?
  3. 另外,语句和连接池之间的区别是什么(如此JTDS文档页面中所述)?

随意添加更多细节到您的答案
(无论您发现什么重要;我没有明确询问的事情),
因为我对此非常困惑.

Mar*_*eel 6

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

ConnectionPoolDataSource创建PooledConnection对象,或者换言之,它是数据源一连接池.它PooledConnection是物理连接的句柄,并保存在连接池中.当用户请求从池中的连接,连接池移动PooledConnection从"可用"到"使用"列表中,并获得一个逻辑java.sql.ConnectionPooledConnection.这种逻辑连接是交给用户的.

PooledConnection通过连接池可以用它来监视逻辑连接.例如,PooledConnectionclose()调用时返回"可用" ,或者强制撤销逻辑连接并使其无效(例如,如果它使用时间太长).

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

关于这个问题,我在类似问题上有更详细的答案.