В настоящее время я создаю множество классов, которые будут обращаться к базе данных с помощью пула соединений.Поэтому я получаю соединение, создаю заявление и получаю набор результатов.(Я не могу использовать 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 методов.
Будет ли хорошей практикой создание вспомогательного класса, который получил бы специальный метод close для каждого типа объекта, например:
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
?
Или, по вашему опыту, лучше все кодировать везде?