Инициализация базы данных Spring Boot только один раз

У меня есть бэкэнд-приложение для весенней загрузки, и я ищу способ вставить данные инициализации в базу данных MySQL, но только каждый раз, когда создаются таблицы. Я сделал это с data.sql, но данные вставляются каждый раз при запуске сервера. Надеюсь, мой вопрос ясен. Спасибо за ваше время :)

Используйте для этого что-нибудь вроде Flyway или Liquibase.

M. Deinum 02.05.2018 10:33

Или сначала выполните запрос количества, чтобы увидеть, есть ли в таблице уже данные или нет.

Gimby 02.05.2018 10:50
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
2
872
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Инициализация базы данных, предоставляемый Spring Boot, предназначен для использования только со встроенными базами данных. Таким образом, это более или менее предполагает, что вам необходимо инициализировать базу данных при каждом запуске приложения.

Для правильной инициализации и развития постоянных баз данных используйте Пролетный путь или Ликвибаза

Наверное, прошло слишком много времени с тех пор, как я задавал этот вопрос. Но я все равно хотел тебя поблагодарить. :)

zgkais 01.07.2020 17:35

У меня он нормально работает без использования Flyway.

У меня есть приложение для весенней загрузки и Mysql db. У меня есть несколько файлов data. *. Sql. Application.properties имеет следующие свойства.

## To enable reading data from multiple files
spring.datasource.data = classpath:data.*.sql

# Initialize the datasource with available DDL and DML scripts
spring.datasource.initialization-mode=always 

# Hibernate ddl auto (create, create-drop, validate, update)
spring.jpa.hibernate.ddl-auto = update

Один из файлов data. *. Sql:

INSERT IGNORE INTO complaintPriority(name) VALUES('EMERGENCY');
INSERT IGNORE INTO complaintPriority(name) VALUES('HIGH');
INSERT IGNORE INTO complaintPriority(name) VALUES('MEDIUM');

Состав модельного класса:

    @Entity
    @Access(value=AccessType.FIELD)
    @Table(name = "complaintPriority", uniqueConstraints = {
            @UniqueConstraint(columnNames = {
                    "complaintPriorityId"
            })
    })
    
    public class ComplaintPriority {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        Long complaintPriorityId;
// Other variables and methods

Другие вопросы по теме