[英]java.sql.Connection leakage issue
我有一个 class ,它通过构造函数进行数据库连接,从示例代码connCat = con_cat
中可以看出(正在传入 con_cat)。
请让我知道:我是否需要明确关闭此 class 内部的 connCat 连接,以便正确释放连接?
如果丢失,是否会导致连接泄漏?
将有一个 finally 子句并执行connCat.close();
和connCat = null;
足够?
public class GenericDbProc extends DBProcessor {
Logger fileLogger = Logger.getLogger(GenericDbProc.class);
Connection connCat;
public GenericDbProc(Connection con_cat)
{
connCat = con_cat;
}
public List<MxsCustomParam> getServiceEndPointDetails(String module_name) {
StringBuffer sb = new StringBuffer();
PreparedStatement stmt = null;
ResultSet rs = null;
sb.append("select xxxxxxx ")
.append(" where module = ?");
List<MxsCustomParam> mxsCustomParamList = new ArrayList<MxsCustomParam>();
try {
stmt = connCat.prepareStatement(sb.toString(), ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
stmt.setString(1, module_name);
rs = stmt.executeQuery();
您从外部通过构造函数获取连接。 我想说关闭连接不应该在这里进行管理,而应该在外部进行。
是的,一旦不再需要连接就应该关闭它,因为它在后台保持一个打开的套接字,并且可以打开多少个连接是有限的。 如果您只是简单地释放对此 object 的引用,则应调用 finalize 并在某个时间点自动关闭连接,但依赖此行为被认为是不好的做法。
是的,通过调用 close 方法在 finally 块中关闭连接,但是由于 Java 7 有更好的方法可以做到这一点。 请看这个: Java 中的关闭数据库连接
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.