【发布时间】:2012-03-19 03:49:08
【问题描述】:
我目前正在创建许多将使用连接池访问数据库的类。 所以我得到一个连接,创建一个语句并得到结果集。 (我不能使用 Java 1.7 和出色的自动资源管理) 在完成我的方法时,我必须以 finally 块结束:
if (rs != null) {
try {
rs.close();
} catch (SQLException sqle) {
logger.error("Couldn't close result set", sqle);
}
}
if (st != null) {
try {
st.close();
} catch (SQLException sqle) {
logger.error("Couldn't close statement", sqle);
}
}
if (connection != null) {
try {
connection.close();
} catch (SQLException sqle) {
logger.error("Couldn't close connection", sqle);
}
}
我已经看到 XX 类每个有 4/5 个方法的噩梦了。
创建一个帮助类对每个对象类型都有一个特殊的关闭方法是否是一种好习惯,例如:
public static void closeResource(Connection connection) {
if (connection != null) {
try {
connection.close();
} catch (SQLException sqle) {
logger.error("Couldn't close connection", sqle);
}
}
然后就照常使用finally 和xx.close(connection);xx.close(statement);xx.close(rs);
或者以同样的想法(我知道在这一点上我会震惊一些人,因为我自己觉得这有点不合时宜),有一个像public static void closeResources(Object... obj) {} 这样的方法和一个糟糕的instanceof 列表?
或者根据您的经验,在任何地方编码整个事情会更好?
【问题讨论】:
-
也许看看使用方面。您可能会使用 aspectJ 编织此功能。
-
@TomaszNurkiewicz 感谢您向我介绍 Spring JDBC,我不会为这个项目使用它,但我会记住这一点。