我是否应该总是关闭CachedRowSet,即使它超出范围?

时间:2012-09-05 09:29:48

标签: java database jdbc cachedrowset

请考虑以下代码段:

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对象在方法中本地使用。我需要在这里手动关闭它,或者当方法结束时它自动收集的内容会自动收集吗?

1 个答案:

答案 0 :(得分:3)

来自:http://docs.oracle.com/javase/1.5.0/docs/api/javax/sql/rowset/CachedRowSet.html

  

CachedRowSet对象是一个断开连接的行集,这意味着它   仅短暂地使用与其数据源的连接。它连接起来   当它正在读取数据以填充自身时,它的数据源   在将更改传播回其底层时再次执行行   数据源。剩下的时间,CachedRowSet对象是   断开连接,包括在修改其数据时。存在   disconnected使得RowSet对象更加精简,因此更多   更容易传递给另一个组件。例如,断开连接   RowSet对象可以序列化并通过线路传递给thin   客户,如个人数字助理(PDA)。

这意味着没有要关闭的连接问题 所以你可以离开它

但我认为总是关闭你打开的东西而不是把它留给你通常不会触摸或告诉何时运行的GC的好习惯。

如果一个足够大的服务器有很多请求,如果它导致打开文件描述符,它最终可能是一个问题。 确保资源关闭始终是最好的