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

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

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

我在这里阅读 JTDS 文档:

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

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

  1. 前提是JTDS驱动本身提供了连接池, 那为什么我需要一个连接池(比如 DBCP)在上面呢?
  2. 换句话说,那个连接有什么区别 JTDS 提供的池,以及一个成熟的连接池 实现(在这个 JTDS 文档页面的意义上)在上面 是吗?
  3. 另外,语句池和连接池有什么区别 (如本 JTDS 文档页面所述)?

请随时为您的答案添加更多详细信息
(任何你认为重要的;我没有明确询问的事情)
因为我对此很困惑。

最佳答案

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

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

连接池可以使用PooledConnection 来监视逻辑连接。例如,当调用 close() 时,将 PooledConnection 返回“可用”状态,或者强行撤销逻辑连接并使其无效(例如,如果它使用时间过长)。

所以jTDS本身并没有连接池的实现,但是它有连接池的支持。不幸的是,JDBC 规范中的措辞如此困惑。

我在 a similar question 上对这个问题有更详细的回答。 .

关于java - JTDS 驱动程序 - 连接池与连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27970382/

相关文章:

postgresql - Postgres 在字符之间插入带有 null 的字符串

java - JFrame 显示不正确

java - Karaf:如何配置虚拟主机

java - java中MapReduce中大量全局变量的存储

java - 用于编排 Web 服务的工具

java - 当打包到 EAR 中时,Jar 中的实用程序类找不到 EJB

java - Hello World Ear : NoModuleFileException: A file does not exist for module element having uri: core-api. jar

java - JDBC 准备语句 SQLSyntaxErrorException

Java 将字符串转换为 SHA1

java - 无法从文档读取架构文件