---
title: "javax.sql.PooledConnection - JDBC 驱动程序  V2.4.13 | OceanBase 文档中心"
description: javax.sql.PooledConnection javax.sql.PooledConnection 是由连接池创建的连接接口。 描述 javax.sql.PooledConnection 为连接池管理提供 Hook 的对象。PooledConnection 对象表示到数据源的物理连接。当应用程序完成连接时，连…
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*bhcER5Qvet8AAAAAAAAAAAAADiGDAQ/original) JDBC 驱动程序 V 2.4.13

# javax.sql.PooledConnection

更新时间：2026-07-22 17:45:59

[编辑](https://github.com/oceanbase/connector-j-doc/edit/V2.4.13/zh-CN/400.reference-information/300.common-interfaces/1300.javax-sql-pooledconnection.md)  

`javax.sql.PooledConnection` 是由连接池创建的连接接口。

## 描述

`javax.sql.PooledConnection` 为连接池管理提供 Hook 的对象。PooledConnection 对象表示到数据源的物理连接。当应用程序完成连接时，连接可以被回收而不是被关闭，从而减少了需要建立的连接数量。

应用程序员不直接使用 PooledConnection 接口，而是由管理连接池的中间层基础设施使用。

当应用程序调用 `DataSource.getConnection` 方法时，会返回一个 Connection 对象。如果正在进行连接池连接，则该 Connection 对象实际上是 PooledConnection 对象的句柄，该对象是一个物理连接。

连接池管理器（通常是应用程序服务器）维护一个 PooledConnection 对象池。如果池中有可用的 PooledConnection 对象，则连接池管理器返回一个 Connection 对象，该对象是该物理连接的句柄。如果没有可用的 PooledConnection 对象，连接池管理器将调用 ConnectionPoolDataSource 方法 `getPoolConnection()` 来创建新的物理连接。实现 ConnectionPoolDataSource 的 JDBC 驱动程序创建一个新的 PooledConnection 对象并返回一个句柄给它。

当应用程序关闭连接时，它会调用 Connection 的 `close()` 方法。当连接池完成时，连接池管理器会收到通知，因为它已使用 ConnectionPool 的 `addConnectionEventListener()` 方法将自己注册为 ConnectionEventListener 对象。连接池管理器停用 PooledConnection 对象的句柄并将 PooledConnection 对象返回到连接池，以便它可以再次使用。因此，当应用程序关闭其连接时，底层物理连接将被回收而不是被关闭。

对于调用 `PoolConnection.getConnection` 返回的逻辑句柄，如果连接池管理器包裹或提供相应的代理，则当连接池管理器关闭或将 PooledConnection 返回到池以响应应用程序时，池管理器必须执行以下操作之一调用 `Connection.close()`：

- 在逻辑连接句柄上调用 `endRequest()`
 - 在逻辑连接句柄上调用 `close()`

在连接池管理器调用 PooledConnection 的 `close()` 方法之前，物理连接不会关闭。通常在有序关闭服务器，或者发生致命错误使连接无法使用时调用此方法。

连接池管理器通常也是语句池管理器，维护 PreparedStatement 对象池。当应用程序关闭 Prepared Statement 时，它会调用 PreparedStatement 的 `close()` 方法。因为它已使用 ConnectionPool 的 `addStatementEventListener()` 方法将自己注册为 StatementEventListener 对象，所以当语句池完成时，池管理器会收到通知。因此，当应用程序关闭其 PreparedStatement 时，底层准备好的语句将被回收而不是被关闭。

## 方法

| 方法名 | 返回值类型 | Oracle 模式是否支持 | MySQL 模式是否支持 |
| --- | --- | --- | --- |
| getConnection() | Connection | 是 | 是 |
| close() | void | 是 | 是 |
| addConnectionEventListener(ConnectionEventListener listener) | void | 是 | 是 |
| removeConnectionEventListener(ConnectionEventListener listener) | void | 是 | 是 |
| addStatementEventListener(StatementEventListener listener) | void | 是 | 是 |
| removeStatementEventListener(StatementEventListener listener) | void | 是 | 是 |

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
