2017-02-16 19 views
1

Для большинства моих запросов я использую метод 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? 
+0

Если вы возитесь с самим соединением, да, вы должны его закрыть. Или лучше использовать «ConnectionCallback» или один из других интерфейсов обратного вызова. Зачем вам нужно вручную установить соединение? Я не нашел необходимости (или призываю) сделать это при использовании 'JdbcTemplate'. –

+0

Чтобы легко сгенерировать несколько отчетов, я просто хочу выгрузить весь результат запроса в объект, который состоит из массива заголовков с именами столбцов и двухмерного массива строк/столбцов для значений. Я хочу использовать один и тот же метод для разных операторов, поэтому мне нужно получить имена заголовков из ResultSet. –

+0

Это именно то, что вам поможет «ResultSetExtractor». –

ответ

1

Я думаю, вам нужно закрыть его самостоятельно. Посмотрите here, реализация шаблона делает это, когда вы выполняете его с помощью шаблона

+0

Я думаю, что я буду использовать метод DataSourceUtils.releaseConnection() ':) –

 Смежные вопросы

  • Нет связанных вопросов^_^