我正在阅读关于Java Data Access—JDBC, JNDI, and JAXP
接口的Connection, PooledConnection
。据我所知,Connection
返回的PooledConnection
表示“逻辑”连接。 PooledConnection
- 本身代表“物理”。关于关闭他们之间有什么区别?
在标准Connection对象上调用close()方法将关闭 物理连接。相反,调用close()方法 logical Connection对象返回到池的逻辑连接 供其他客户使用。
我的第一个问题是:我应该调用PooledConnection.close()吗?如果我是对的,我不希望物理连接关闭,我只想检查物理连接(释放它)到它的池。
第二个问题:我不明白为什么我需要在Connection.close()
PooledConnection.getConnection()
如果您查看示例:PooledConnection example仅调用Connection.close()
方法,而不是PooledConnection.close()
。请评论。
根据官方文档:PooledConnection.close PooledConnection实际上关闭了此PooledConnection对象所代表的物理连接。但正如我所理解的连接池主要(主要之一)目的 - 保持物理连接,而不关闭/创建它。根据文档,如果我运行PooledConnection.close(),那么连接池将不得不再次重新创建它。你能否对此发表评论。
感谢。
答案 0 :(得分:0)
PooledConnection通常仅由容器直接使用,用于管理连接池。如果您正在编写一个容器或某些东西,它将提供与其他代码/库的连接,您只需处理这些内容即可完成实际工作。
标准java.sql.Connection对象由JDBC客户端使用,用于实际执行数据库工作。此代码不应接触PooledConnection,并且将通过容器(例如Java EE容器或通过依赖注入)给予它连接,或者从DataSource或DriverManager创建连接。
答案 1 :(得分:0)
你没有选择。你所拥有的只是一个实现Connection的类的对象,它有一个close()方法。所以称之为。没有必要的决定。 'An application programmer does not use the PooledConnection interface directly'.