lait8904 / DALLE-HOODIE

0 stars 0 forks source link

Jdbc #5

Open dmordvinov opened 1 year ago

dmordvinov commented 1 year ago

Переезжаем наконец то на данные из БД.

  1. Подключаем в зависимостях maven, jdbc драйвер для постгре org.postgresql postgresql 42.5.0
  2. Делаем необходимую инициализацию при старте приложения. Давай выделим отдельный класс DBConnectionProvider, который при создании объекта будет загружать драйвер и иницилизировать соединение с БД. (никаких пулов, мултитрединга, ssl не используем, чем проще пока, тем лучше). Наш класс будет отдавать коннекшин нашим класса слоя репозиториев.
  3. DbConnectionProvider засунем в каждый репозиторий. Ну и переносим всю логику поиска айтемов, категорий, пользователей, ордеров в SQL. С помощью connection создаем Statements, выполняем SQL, получаем ResultSet.

https://jdbc.postgresql.org/documentation/

dmordvinov commented 1 year ago
  1. поскольку мы уже мавеном пользуемся, то согласно структуре директорий мавенов твой source код должен начинаться от main/java. Соответственно все пакеты не должны использовать этот путь, а только путь этой точки. Исправь все main.java.dalleHoodie. -> dalleHoodie.

  2. Смотри какая интересная вещь получилась, у тебя много дублирования кода в репозиториях: Создать statement, выполнить запрос, и кстати нужно закрывать каждый раз statements и resultSet, да еще и исключения обрабатывать. Вот для этого нам и пригодится DBConnectionProvider, куда можно весь общий код вынести в методы например select(String query), update(...), create(). При этом в методы мы будем передавать не только запросы, но и Consumer имплементацию для конвертации резалтСета. В этом случае DBConnectionProvider хранит подключение и отвественный за него. На каждый метод он выполняет запрос, отдает ResultSet в переданный консьюмер, а после сам все закрывает. И все это в одном месте. Если ничерта не понятно. Почитай паттерн проектирования "Команда" и можем на часик собраться покодить вместе, покажу.

  3. Давай вынесем инициализацию всех объектов в отдельный метод. А выбор вызова сервиса сделаем не через switch а через паттерг "Стратегия". Если также ничерта не понятно, то изучи его и тоже покодим вместе.