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

问题描述 投票:0回答:1

考虑以下代码片段:

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
对象在方法中本地使用。我是否需要在此处手动关闭它,或者当该方法完成时,它所保存的内容将被自动收集?

java database jdbc cachedrowset
1个回答
4
投票

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

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

这意味着不存在需要关闭的连接问题,因此您可以保留它。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.