我已经离开 Java EE 有一段时间了,但我对所有这些东西都有一个基本的了解。
我在这里阅读 JTDS 文档:
http://jtds.sourceforge.net/features.html
它说它提供语句池和连接池,但不提供连接池实现。
- 前提是JTDS驱动本身提供了连接池, 那为什么我需要一个连接池(比如 DBCP)在上面呢?
- 换句话说,那个连接有什么区别 JTDS 提供的池,以及一个成熟的连接池 实现(在这个 JTDS 文档页面的意义上)在上面 是吗?
- 另外,语句池和连接池有什么区别 (如本 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/