Java JDBC: Работа с базой данных
Теория: Паттерн DAO
Работать напрямую с JDBC в коде не очень удобно из-за большого количества низкоуровневых деталей и повторяющегося шаблонного кода. Кроме того, нам постоянно приходится преобразовывать данные в одну и в другую сторону.
Чтобы решить эту проблему, можно скрыть работу с базой за какой-то абстракцией. Один из вариантов такой изоляции называют DAO (Data Access Object).
Концепция DAO очень проста. Она сводится к созданию класса под каждую таблицу в базе данных. В классе реализуются методы, которые сохраняют, удаляют или ищут сущности в этой таблице. Когда речь идет о пользователях, наш класс DAO может выглядеть так:
Метод save() в этом классе не только сохраняет данные в базу, но и изменяет переданный объект, устанавливая внутри него идентификатор. Зачем это нужно? Код приложения работает с объектом, а не с базой напрямую. Соответственно, любые изменения в базе должны отражаться на объекте.
Если бы мы не установили идентификатор после сохранения пользователя, то не смогли бы:
- Формировать ссылки — например, ссылку на редактирование пользователя
- Сравнивать объекты друг с другом
- Отличать существующих пользователей от новых, которых мы еще не сохранили в базу данных
- Обеспечить работу кода так, чтобы полноценная версия
save()проверяла наличие идентификатора и выполняла обновление данных, если его нет
Метод find() возвращает Optional, а не просто найденный объект. Это помогает избежать возврата null в тех случаях, когда запись не найдена. Возврат null требовал бы от программиста постоянно помнить о проверке на существование объекта и выполнять ее:
По такому же принципу построен Spring Boot, с которым мы познакомимся в другом курсе. Рассмотрим еще несколько примеров использования DAO:
Рекомендуемые программы
Завершено
0 / 5

