С помощью Spring Boot + Hibernate мы можем легко управлять нашей базой данных. По умолчанию все классы, отмеченные аннотацией @Entity
в наших пакетах, используются для автоматического создания таблиц.
Что ж, бывают случаи, когда нам нужен более детальный контроль над изменениями базы данных в соответствии с нашими требованиями. В этом посте я поделюсь информацией об одном из этих сценариев: Автоматическое заполнение или загрузка начальных значений в наши таблицы .
Spring Boot имеет некоторые оговорки для подобных ситуаций. Мы используем data.sql
файл в Spring, чтобы реализовать это.
Этот файл должен быть сохранен в каталоге: src/main/resources/
Подсказка: То же место, что и применение.свойства файл.
Когда мы запустим проект с этим файлом в каталоге ресурсов, Spring подберет его и будет использовать для заполнения базы данных.
В качестве примера мы можем решить загрузить начальные значения для объекта Role
следующим образом:
INSERT INTO Role (name) VALUES ('USER'); INSERT INTO Role (name) VALUES ('ADMIN');
Когда вы запустите свое приложение, spring попытается загрузить эти данные в таблицу Role
, которая в настоящее время не существует, что приведет к сбою программы, поэтому нам нужно добавить следующую конфигурацию в файл application.properties
spring.jpa.defer-datasource-initialization=true
Это говорит spring отложить процесс инициализации данных. Теперь запустите свое приложение spring, и вы сможете увидеть значения “ПОЛЬЗОВАТЕЛЬ” и “АДМИНИСТРАТОР” в таблице ролей.
Надеюсь, вы найдете это полезным. Вы можете оставить комментарий, чтобы внести свой вклад. Спасибо!
Оригинал: “https://dev.to/imanuel/loading-initial-data-with-spring-boot-58mi”