Задать вопрос
mitaichik
@mitaichik

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

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

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

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

Как правильно?
  • Вопрос задан
  • 715 просмотров
Подписаться 3 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Java-разработчик с нуля
    12 месяцев
    Далее
  • Академия Эдюсон
    Java-разработчик + ИИ
    8 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Java-разработчик + ИИ
    9 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
Всё зависит от конкретных потребностей и/или предпочтений. Кому-то может оказаться удобнее поймать SqlException вне метода, получающего данные, а кому-то получить null и понять, что записи не найдено.
В queryForObject можно просто передать маппер и не думать об обработке каждой записи ResultSet.
А в ResultSetExtractor можно без Exception обработать ситуацию как отсутствия найденных записей, так и получения нескольких записей, если ожидалась только одна.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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