Для большинства моих запросов я использую метод query()
JdbcTemplate
и RowMapper
, который будет выполнять все утверждения и соединения внутри.Должен ли я закрыть соединение JdbcTemplate и созданные вручную сообщения?
Но в конкретном случае мне нужны дополнительные метаданные от ResultSet
и просто хочу обрабатывать Statement
и.
Должен ли я закрыть Statement
или Connection
, чтобы он был возвращен в пул соединений или это делается весной, даже если я не использую методы JdbcTemplate?
Connection conn = getJdbcTemplate().getDataSource().getConnection();
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
/* ... */
ps.close(); // should I do this?
conn.close(); // and this?
Если вы возитесь с самим соединением, да, вы должны его закрыть. Или лучше использовать «ConnectionCallback» или один из других интерфейсов обратного вызова. Зачем вам нужно вручную установить соединение? Я не нашел необходимости (или призываю) сделать это при использовании 'JdbcTemplate'. –
Чтобы легко сгенерировать несколько отчетов, я просто хочу выгрузить весь результат запроса в объект, который состоит из массива заголовков с именами столбцов и двухмерного массива строк/столбцов для значений. Я хочу использовать один и тот же метод для разных операторов, поэтому мне нужно получить имена заголовков из ResultSet. –
Это именно то, что вам поможет «ResultSetExtractor». –