假设有一个 jdbc 代码运行一些 CRUD 操作。现在,在一个特定的场景中,碰巧有一个行锁,并且该 session 会阻塞其他数据库 session 。
在这种情况下,如果阻塞 session 在数据库端被终止,相应的 java Connection 对象会发生什么情况?给出异常后该对象会变为 null 吗?如果稍后在代码中使用该连接对象而不进行检查,会出现什么行为?
我知道作为最佳实践,我们应该从池中获取连接并在完成后将其关闭,但是有很多以其他方式编写的遗留代码需要一些时间来清理。
如果上述连接是通过数据源创建的,管理连接池,而不是通过普通的 jdbc 连接,那么答案是什么?
最佳答案
任何正在进行的操作都将抛出 SQLException
并且对 Connection.isClosed()
方法的任何调用都将返回 true。任何后续使用连接对象的尝试也将抛出 SQLException
并显示连接已关闭的错误。
这不会将您的连接对象设置为空。如果抛出异常或 Connection.isClosed()
返回 true,则除非您编写显式代码将对象设置为 null,否则什么也做不了。您将不得不手动执行此操作。
关于java - 在数据库服务器端终止 session 是否也会关闭连接并使 jdbc 连接对象为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4206536/