mitaichik
@mitaichik

JdbcTemplate: как правильно выбирать один объект?

Задача: нужно вернуть из БД объект или null если он не найден

Есть JdbcTemplate.queryForObject. В случае если записи нет - он выкинет эксепшн. Чтобы вернуть null рекомендуют просто ловить этот эксепшн и возвращать null, но мне кажется это не самый лучший способ.

Есть вот такой метод: query(String sql, ResultSetExtractor rse), но он почему-то вызывает ResultSetExtractor.extractData даже если БД вернула 0 строк.

В общем - подскажите как правильно. Заранее спасибо!
  • Вопрос задан
  • 639 просмотров
Пригласить эксперта
Ответы на вопрос 1
Всё зависит от конкретных потребностей и/или предпочтений. Кому-то может оказаться удобнее поймать SqlException вне метода, получающего данные, а кому-то получить null и понять, что записи не найдено.
В queryForObject можно просто передать маппер и не думать об обработке каждой записи ResultSet.
А в ResultSetExtractor можно без Exception обработать ситуацию как отсутствия найденных записей, так и получения нескольких записей, если ожидалась только одна.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы