Вот мы и подобрались к базам данных. Это было неизбежно. Какой back-end без базы данных?
В общем, в этой статье мы подробно рассмотрим процесс подключения БД к проекту, настройку этого подключения и создание таблиц в базе данных. Станет понятно, какие есть нюансы и подводные камни, и на что следует обратить внимание. Код конфигурации будет предоставлен для таких СУБД, как PostgreSQL, Oracle, MySQL и MS SQL Server. Но и для других СУБД найти код в интернетах, я уверена, нетрудно. Приступим!
Зависимости в pom.xml
Для работы с каждой конкретной СУБД понадобится своя зависимость в файле pom.xml. Я работаю с PostgreSQL, и потому у меня записана следующая зависимость:
1 2 3 4 |
<dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> </dependency> |
Для СУБД Oracle нужно добавить следующий код в pom.xml:
1 2 3 4 |
<dependency> <groupId>com.oracle.database.jdbc</groupId> <artifactId>ojdbc10</artifactId> </dependency> |
Инструменты для работы с БД в MySQL подключаются так:
1 2 3 4 |
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> |
MS SQL Server нуждается в следующем коде:
1 2 3 4 |
<dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> </dependency> |
После добавления зависимости в файл pom.xml обязательно нужно синхронизировать изменения, чтобы зависимости обновились. В среде разработки IntelliJ IDEA всплывает небольшая кнопка с буквой m и символом круговых стрелок. Затем можно приступить к созданию БД и нескольких таблиц в ней.
Создание таблиц в БД
Чтобы подключиться к базе данных, нам нужна база данных. Давайте создадим её. Так как я работаю с СУБД PostgreSQL, я подыскала программу с визуальным интерфейсом для неё. Это pgAdmin 4, и именно из неё я буду создавать БД и таблицы в ней.
В несколько кликов я создаю новую базу данных (Database) в среде pgAdmin.
Название будет beauty_of_java, а владелец – традиционный пользователь root. Как водится, пароль у него тоже root.
Теперь в базе данных 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. От СУБД зависит, какие конкретные типы данных будут у каждого столбца таблиц.
Вот получившиеся две таблицы:
В итоге, для столбцов id обеих таблиц задан первичный ключ. А для столбца user_id в таблице posts был создан вторичный ключ, ссылающийся на id в таблице users. Бесспорно, это отличная работа, можем идти вперёд!
Настройки в application.properties
Файл application.properties содержит настройки Spring-приложения. Именно здесь можно задать, например, порт, по которому вы будете подключаться к приложению:
1 |
server.port=8080 |
Это число влияет на то, что нужно писать в адресной строке браузера. 8080 – порт по умолчанию. Так что если он у вас занят на компьютере, вы смело можете менять его на 8090, 8070 или всё, что вам вздумается. Или почти всё.
Давайте настроим непосредственно подключение к БД. Для PostgreSQL нужно записать в application.properties следующее:
1 2 3 4 |
spring.datasource.url=jdbc:postgresql://localhost:5432/название_базы_данных spring.datasource.username=ваш_логин spring.datasource.password=ваш_пароль spring.datasource.driver-class-name=org.postgresql.Driver |
Порт для PostgreSQL по умолчанию стоит 5432, и если вы его меняли, то указать нужно тот, на который меняли. Также нужно вставить своё название базы данных, логин и пароль. Вот что вышло у меня:
1 2 3 4 |
spring.datasource.url=jdbc:postgresql://localhost:5432/beauty_of_java spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=org.postgresql.Driver |
В принципе, этот этап завершён. Приведу ещё код для нескольких других СУБД.
Для Oracle:
1 2 3 4 |
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:название_базы_данных spring.datasource.username=ваш_логин spring.datasource.password=ваш_пароль spring.datasource.driver-class-name=oracle.jdbc.OracleDriver |
Код для MySQL:
1 2 3 4 |
spring.datasource.url=jdbc:mysql://localhost:3306/название_базы_данных spring.datasource.username=ваш_логин spring.datasource.password=ваш_пароль spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver |
Для MS SQL Server:
1 2 3 4 |
spring.datasource.url=jdbc:sqlserver://localhost:1433;databaseName=название_базы_данных spring.datasource.username=ваш_логин spring.datasource.password=ваш_пароль spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver |
Подключение БД к проекту в среде разработки
Подключение к базе данных из среды разработки позволит вам оттуда видеть структуру вашей базы данных. То есть впоследствии при написании кода, когда вы будете ссылаться на таблицы и столбцы, будет проще и удобнее. Да и в целом – это прикольно.
В IntelliJ IDEA нужно перейти по View -> Tool Windows -> Database. Откроется окошко, где можно создать новый Data Source (источник данных). Это нам и нужно.
Дальше необходимо нажать на плюсик, навести на Data Source и из выпадающего списка выбрать нужную вам СУБД. Я выбираю PostgreSQL.
В диалоговом окне настройки подключения к БД мы, по сути, просто пишем ту же информацию, что и в application.properties.
После ввода всех необходимых данных для проверки подключения можно нажать Test Connection. Уху, всё получилось как надо! Жмём OK. Здесь наше дело сделано.
В окошке с источниками данных можно убедиться, что подключение произошло именно к той базе данных, к которой мы хотели. Для этого можно развернуть подключение (beauty_of_java@localhost). Внутри будет БД с названием beauty_of_java. Внутри неё – схема public, и в ней таблицы posts и users. Всё прошло как по маслу!
Если у вас отображается 0 таблиц, попробуйте кликнуть ПКМ по подключению (beauty_of_java@localhost) и выбрать в выпадающем списке Refresh (обновить). Данные должны обновиться и стать актуальными.
В конце концов, мы хорошенько постарались. Мы рассмотрели шаги по подключению к разным СУБД в SpringBoot-проекте, выяснив всё про pom.xml и application.properties. Кроме того, мы создали БД и таблицы в ней. К тому же, подключились к базе данных прямо из среды разработки. Успешных запросов и транзакций!