Настройка и подключение БД к проекту

  • Рубрика записи:Spring back-end

Вот мы и подобрались к базам данных. Это было неизбежно. Какой back-end без базы данных?

В общем, в этой статье мы подробно рассмотрим процесс подключения БД к проекту, настройку этого подключения и создание таблиц в базе данных. Станет понятно, какие есть нюансы и подводные камни, и на что следует обратить внимание. Код конфигурации будет предоставлен для таких СУБД, как PostgreSQL, Oracle, MySQL и MS SQL Server. Но и для других СУБД найти код в интернетах, я уверена, нетрудно. Приступим!

Зависимости в pom.xml

Для работы с каждой конкретной СУБД понадобится своя зависимость в файле pom.xml. Я работаю с PostgreSQL, и потому у меня записана следующая зависимость:

Для СУБД Oracle нужно добавить следующий код в pom.xml:

Инструменты для работы с БД в MySQL подключаются так:

MS SQL Server нуждается в следующем коде:

После добавления зависимости в файл pom.xml обязательно нужно синхронизировать изменения, чтобы зависимости обновились. В среде разработки IntelliJ IDEA всплывает небольшая кнопка с буквой m и символом круговых стрелок. Затем можно приступить к созданию БД и нескольких таблиц в ней.

Создание таблиц в БД

Чтобы подключиться к базе данных, нам нужна база данных. Давайте создадим её. Так как я работаю с СУБД PostgreSQL, я подыскала программу с визуальным интерфейсом для неё. Это pgAdmin 4, и именно из неё я буду создавать БД и таблицы в ней.

Загрузка приложения pgAdmin 4 для работы с СУБД PostgreSQL

Создание новой БД в pgAdmin

В несколько кликов я создаю новую базу данных (Database) в среде pgAdmin.

Название будет beauty_of_java, а владелец – традиционный пользователь root. Как водится, пароль у него тоже root.

Указание названия БД в pgAdmin

Теперь в базе данных beauty_of_java можно раскрыть пункт Schemas, выбрать public (схема по умолчанию), там найти раздел Tables и создать новую таблицу.

Давайте реализуем вот какую идею: мини-соц.сеть. Всего будет две таблицы, представляющие две сущности (entity)пользователь (user) и запись (post). Пользователи могут публиковать записи. Это так называемая концептуальная модель базы данных. В будущем мы сможем оперировать данными из БД с помощью слоя repository.

Тогда логическая модель базы данных будет выглядеть так: у нас есть две таблицы – users и posts. Они связаны через поле user_id у posts. То есть каждая запись будет ссылаться на пользователя, который её опубликовал. Таблицы будут иметь следующие поля:

Таблица users

  • id : число
  • email : строка
  • password : строка
  • username : строка

Таблица posts

  • id : число
  • user_id : число
  • title : строка
  • text : строка
  • publishing_time : дата и время

А теперь, дамы и господа, реализуем физическую модель БД. Ей должна быть конкретная реализация в конкретной СУБД. В моём случае – в PostgreSQL. От СУБД зависит, какие конкретные типы данных будут у каждого столбца таблиц.

Вот получившиеся две таблицы:

Создание таблицы users в pgAdmin
Создание таблицы posts в pgAdmin

В итоге, для столбцов id обеих таблиц задан первичный ключ. А для столбца user_id в таблице posts был создан вторичный ключ, ссылающийся на id в таблице users. Бесспорно, это отличная работа, можем идти вперёд!

Настройки в application.properties

Файл application.properties содержит настройки Spring-приложения. Именно здесь можно задать, например, порт, по которому вы будете подключаться к приложению:

Это число влияет на то, что нужно писать в адресной строке браузера. 8080 порт по умолчанию. Так что если он у вас занят на компьютере, вы смело можете менять его на 8090, 8070 или всё, что вам вздумается. Или почти всё.

Давайте настроим непосредственно подключение к БД. Для PostgreSQL нужно записать в application.properties следующее:

Порт для PostgreSQL по умолчанию стоит 5432, и если вы его меняли, то указать нужно тот, на который меняли. Также нужно вставить своё название базы данных, логин и пароль. Вот что вышло у меня:

В принципе, этот этап завершён. Приведу ещё код для нескольких других СУБД.

Для Oracle:

Код для MySQL:

Для MS SQL Server:

Подключение БД к проекту в среде разработки

Подключение к базе данных из среды разработки позволит вам оттуда видеть структуру вашей базы данных. То есть впоследствии при написании кода, когда вы будете ссылаться на таблицы и столбцы, будет проще и удобнее. Да и в целом – это прикольно.

В IntelliJ IDEA нужно перейти по View -> Tool Windows -> Database. Откроется окошко, где можно создать новый Data Source (источник данных). Это нам и нужно.

Дальше необходимо нажать на плюсик, навести на Data Source и из выпадающего списка выбрать нужную вам СУБД. Я выбираю PostgreSQL.

Подключение БД к проекту в IntelliJ IDEA Ultimate Edition (View -> Tool Windows -> Database)

Подключение БД к проекту в IntelliJ IDEA Ultimate Edition (Data Source -> PostgreSQL)
Настройка параметров подключения БД к проекту в IntelliJ IDEA Ultimate Edition

В диалоговом окне настройки подключения к БД мы, по сути, просто пишем ту же информацию, что и в application.properties.

Тестирование подключения БД к проекту в IntelliJ IDEA Ultimate Edition

После ввода всех необходимых данных для проверки подключения можно нажать Test Connection. Уху, всё получилось как надо! Жмём OK. Здесь наше дело сделано.

В окошке с источниками данных можно убедиться, что подключение произошло именно к той базе данных, к которой мы хотели. Для этого можно развернуть подключение (beauty_of_java@localhost). Внутри будет БД с названием beauty_of_java. Внутри неё – схема public, и в ней таблицы posts и users. Всё прошло как по маслу!

Если у вас отображается 0 таблиц, попробуйте кликнуть ПКМ по подключению (beauty_of_java@localhost) и выбрать в выпадающем списке Refresh (обновить). Данные должны обновиться и стать актуальными.

Просмотр данных БД из проекта в IntelliJ IDEA Ultimate Edition

В конце концов, мы хорошенько постарались. Мы рассмотрели шаги по подключению к разным СУБД в SpringBoot-проекте, выяснив всё про pom.xml и application.properties. Кроме того, мы создали БД и таблицы в ней. К тому же, подключились к базе данных прямо из среды разработки. Успешных запросов и транзакций!

Добавить комментарий