Java Connection.close与PooledConnection.close的比较

Java Connection.close与PooledConnection.close的比较,java,jdbc,connection,connection-pooling,Java,Jdbc,Connection,Connection Pooling,我正在阅读Java数据访问JDBC、JNDI和JAXP关于Connection、PooledConnection接口的内容。据我所知,PooledConnection返回的Connection表示一个“逻辑”连接池连接-本身表示“物理”。关于结帐,他们之间有什么不同 对标准连接对象调用close()方法将关闭 物理连接。相反,在 逻辑连接对象返回到池的逻辑连接 供其他客户端使用 我的第一个问题是:我应该调用PooledConnection.close()吗?如果我是对的,我不想关闭物理连接,我只

我正在阅读
Java数据访问JDBC、JNDI和JAXP
关于
Connection、PooledConnection
接口的内容。据我所知,
PooledConnection
返回的
Connection
表示一个“逻辑”连接<代码>池连接-本身表示“物理”。关于结帐,他们之间有什么不同

对标准连接对象调用close()方法将关闭 物理连接。相反,在 逻辑连接对象返回到池的逻辑连接 供其他客户端使用

  • 我的第一个问题是:我应该调用PooledConnection.close()吗?如果我是对的,我不想关闭物理连接,我只想将物理连接签出(释放)到它的池中

  • 第二个问题:我不明白为什么需要对对象调用
    Connection.close()
    ,该对象由
    PooledConnection.getConnection()返回

  • 如果查看示例:只调用
    Connection.close()
    方法,而不调用
    PooledConnection.close()
    。请评论一下

  • 根据官方文档:PooledConnection实际上关闭了这个PooledConnection对象表示的物理连接。但据我所知,连接池的主要目的之一是保持物理连接,而不关闭/创建物理连接。根据文档,如果我运行PooledConnection.close(),那么连接池将不得不重新创建它。你能对此发表评论吗


  • 谢谢。

    PooledConnection通常仅由容器直接使用,用于管理连接池。如果您正在编写一个容器或其他东西,这些容器或东西将提供到其他代码/库的连接,这些代码/库将完成实际工作,那么您只需要处理这些问题


    JDBC客户机使用标准java.sql.Connection对象,并用于实际执行数据库工作。此代码不应涉及PooledConnection,它将由容器(如Java EE容器或通过依赖项注入)提供到它的连接,或者将从数据源或DriverManager创建连接本身。

    PooledConnection通常仅由容器直接使用,和用于管理连接池。如果您正在编写一个容器或其他东西,这些容器或东西将提供到其他代码/库的连接,这些代码/库将完成实际工作,那么您只需要处理这些问题


    JDBC客户机使用标准java.sql.Connection对象,并用于实际执行数据库工作。此代码不应涉及PooledConnection,它将由容器(如Java EE容器或通过依赖项注入)为其提供连接,或者将从数据源或DriverManager创建连接本身。

    您没有选择权。您所拥有的只是实现连接的某个类的对象,它有一个close()方法。就这么说吧。没有必要作出决定

    你别无选择。您所拥有的只是实现连接的某个类的对象,它有一个close()方法。就这么说吧。没有必要作出决定