考虑以下代码片段:
public void getUsers() {
CachedRowSet rowSet = new CachedRowSetImpl();
......... /* Initialize the rowset */
String query = "SELECT user_id FROM users";
rowSet.setCommand(query);
rowSet.execute();
......... /* Do some job */
}
此处,
CachedRowSet
对象在方法中本地使用。我是否需要在此处手动将其关闭,否则方法完成后将自动收集其中包含的内容? 最佳答案
来自:http://docs.oracle.com/javase/1.5.0/docs/api/javax/sql/rowset/CachedRowSet.html
CachedRowSet对象是断开连接的行集,这意味着它
仅短暂使用与其数据源的连接。它连接
读取数据以将其自身填充到其数据源时
在它传播到其基础的更改时
数据源。其余时间,CachedRowSet对象是
断开连接,包括正在修改其数据时。存在
断开连接会使RowSet对象更精简,因此要精简得多
更容易传递给另一个组件。例如,断开连接
RowSet对象可以序列化并通过导线传递到细
客户,例如个人数字助理(PDA)。
这意味着没有连接问题可以关闭
所以你可以离开它
但我认为始终关闭打开的内容而不将其留给GC的良好做法是,通常您不会触摸或告诉何时运行。
如果给一个足够大的服务器处理许多请求,那么如果它导致打开文件描述符,则最终可能会成为问题。
确保资源封闭永远是最好的