我在我的应用程序中使用连接池。我的问题是:
在连接池环境的情况下,是否明确要求在关闭连接之前关闭语句?
在连接池环境中,连接没有关闭,(但返回到空闲连接池)。我检查了 jdbc 4.0 功能规范。在第 9.4.4 点中,它明确指出:
关闭连接对象 应用程序调用 Connection.close 方法来指示它已完成使用连接。当调用对象的 close 方法时,从给定 Connection 对象创建的所有 Statement 对象都将被关闭。一旦一个 Connection 被关闭,除了 close、isClosed 或 isValid 方法之外的任何访问它的任何方法的尝试都将导致抛出 SQLException。
因此 jdbc 规范要求在关闭连接时关闭所有语句。那么它仅适用于非连接池环境还是也适用于连接池环境?
根据我的说法,在池化环境的情况下这无关紧要,因为我们正在为接口(java.sql.Connection
& java.sql.Statement
)编码。所以我们不关心实现,父类(java.sql.Connection
)没有关于子/实现类(供应商实现类)的任何信息。