Для получения информации из БД в 90% случаев используется вот такая схема метода:
public static String getAnything() throws SQLException, FrameworkException {
OraclePreparedStatement preparedStatement = null;
OracleConnection connection = (OracleConnection) TransactionScope.getConnection();
ResultSet resultSet = null;
try {
String sql = ""; // SQL запрос
preparedStatement = (OraclePreparedStatement)connection.prepareStatement(sql);
resultSet = preparedStatement.executeQuery();
String anything = "";
while (resultSet.next()){
anything = resultSet.getString(1); // Получаем нужные данные
}
return anything;
} catch (Exception e) {
e.printStackTrace();
return "";
} finally {
if (resultSet != null)
resultSet.close();
if (preparedStatement != null)
preparedStatement.close();
if (connection != null)
TransactionScope.releaseConnection(connection);
}
}
Очень беспокоит, что Java классы компании практически полностью состоят из множества методов, каркас которого приведен выше. Т.е copy-paste кода выше, с изменением SQL текста запроса и имя метода, и иногда типа возвращаемых данных.
Но это не все! Огромный текст SQL запроса вставлен прямо в тело метода, в который биндится переменные. Читать и поддерживать такой код не удобно.
Как выйти из такой ситуации (убрать дублирование методов, спрятать SQL тексты из Java кода)?
Я пока вижу два выхода:
1. Написания нескольких методов (под разный тип возвращаемых данных) вида:
getString(String sql, String...binds) { // binds - переменные, которые подставятся в SQL запрос
}
getArray(String sql, String...binds) {
}
2. Активное изучение Hibernate, и его продвижение.
В компании пока 1 Java разработчик - я (позиция Junior), опыта очень мало. Кода очень много.
Спасибо!