3

考虑以下代码片段:

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对象在方法中本地使用。我需要在这里手动关闭它还是方法完成时它所保存的内容将被自动抓取?

4

1 回答 1

3

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

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

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

但我认为始终关闭您打开的内容而不是将其留给您通常不会触摸或告诉何时运行的 GC 是一种很好的做法。

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

于 2012-09-05T10:57:03.190 回答