6.1.4 语句自动关闭

在JDBC 4.1之前,当使用一个Statement接口的实现对象进行查询,得到表示结果集的ResultSet接口的实现对象并完成处理之后,需要显式地通过close方法来关闭ResultSet和Statement接口的实现对象以释放资源。使用Java 7的try-with-resources语句可以简化这个操作,而更好的办法是使用JDBC 4.1为Statement接口添加的自动关闭功能。在调用了Statement接口的closeOnCompletion方法之后,表明当依赖此Statement接口的实现对象的所有结果集都被关闭之后,该Statement接口的实现对象也被自动关闭。通过这种方式,开发人员只需显式地关闭结果集即可,不需要考虑Statement接口的实现对象本身的关闭问题。这个新特性在Statement接口的实现对象作为参数在多个方法中传递时尤为实用。当代码中的多个地方都使用了相同的Statement接口的实现对象来打开结果集时,以前需要设计好由哪个方法来关闭该Statement接口的实现对象,而使用这个自动关闭功能之后,每个方法只需要关闭该方法内部打开的结果集即可,不需要考虑Statement接口的实现对象自身的关闭问题。