几个月前,我了解到在使用时java.sql.connection
我需要关闭PreparedStatements
并ResultSet
防止内存泄漏,如此处所述
然而,我最近开始与一个新团队合作,该团队使用org.sql2o.connection
了一个很好且有用的 jdbc 包装器,但我注意到他们通常不会关闭他们的org.sql2o.Query
对象。
try(org.sql2o.Connection c = Sql2oObject.open()){
//...some logic
List<SomeClass> list = c.createQuery(sql).executeAndFetch(SomeClass.class);
//...some more logic
}
如您所见,查询对象从未显式关闭。我认为关闭查询会更好:
try(org.sql2o.Connection c = sql2oObject.open();
org.sql2o.Query q = c.createQuery(sql); ) {
//...some logic
List<SomeClass> list = q.executeAndFetch(SomeClass.class);
//...some more logic
}
但我不确定是否真的有必要。如果是,那么我已经发现了一个可能的重大泄漏,我将被视为天才,并被永远铭记。如果不是,那么我只是一个要求进行不必要更改的人。
那么,你怎么说哦,强大的SO?有必要关闭它们吗?