执行connection.createStatement().executeQuery(String query);
是否安全,或者每次使用时是否应该通过“hand”创建和关闭每个java.sql.Statement
对象,即使在finally块中关闭连接也是如此?
如果一个连接在一个方法中执行多个查询,那么如果不是必须实例化和关闭每个语句,那么它将使用更少的代码。
答案 0 :(得分:10)
在几乎所有JDBC驱动程序实现中关闭Connection
也会隐式关闭Statement
。但是,如果您使用连接池(并且您希望使用一个因为这极大地提高了连接性能),则但很大,close()
将不会关闭{{1但是,请将其释放回池中,然后将Connection
打开。当你经常这样做时,迟早会耗尽资源,这可能会导致你的应用程序失效。
始终在尽可能短的范围内获取并关闭所有三个资源Statement
,Connection
和Statement
,无任何借口。
答案 1 :(得分:1)
将所有样板代码移动到辅助方法/类。
通过这种方式,您可以以与JDBC(或任何其他有限资源包)文档一致的方式获取/释放资源,并使您的业务逻辑不会受到JDBC混乱的污染。
虽然现在看起来对你来说似乎是一种浪费,但是将单个查询专用于业务逻辑类中的单个方法并没有错。