В этой статье представлено использование пролета для Springboot для обеспечения миграции базы данных. Это совместно с вами. Детали следующие:
Во -первых, позвольте мне сначала понять, как работает Flayway.
Самое простое решение - указать на пролету на пустую базу данных.
Он попытается найти свою таблицу метаданных. Когда база данных пуста, пролет не найдет его, но создайте. Теперь у вас есть база данных с одной пустой таблицей с именем Schema_version:
Эта таблица будет использоваться для отслеживания состояния базы данных. После этого Flyway начнет сканировать файловую систему или класса приложения для миграции. Они могут быть написаны в SQL или Java.
Затем сортируйте миграции по номеру версии и примените по порядку:
По мере применения каждой миграции таблица метаданных будет обновляться соответственно:
Schema_version
С помощью метаданных и начального состояния мы теперь можем поговорить о миграции в более новые версии.
Flayway снова сканирует файловую систему или группу приложения для миграции. Проверьте миграции на таблицы метаданных. Если номера версий ниже или равны номеру версии, помеченной как текущая версия, они игнорируются.
Остальные миграции находятся на рассмотрении миграции: доступны, но не применяются.
Затем они сортируют по номеру версии и выполняются по очереди:
Эта таблица метаданных обновляется, так что:
Schema_version
Вот и все! Всякий раз, когда вам нужно разработать базу данных, будь то структура (DDL) или справочные данные (DML), просто создайте новую миграцию с номером версии выше текущей версии. В следующий раз, когда начнется пролетели, он обнаруживает и обновляет базу данных соответственно.
2. Использование пролета в Springboot
Одним из способов является установка свойства hibernate.hbm2ddl.auto для создания, создания или обновления через свойство Spring Boot. Например, чтобы установить hibernate.hbm2ddl.auto для создания капли, мы можем добавить следующий контент в Application.yml:
Весна: JPA: Hibernate: DDL-Auto: Create-Drop
Тем не менее, это не идеально для производственных сред, потому что каждый раз, когда приложение перезагружает базу данных, схема будет опустошена и перестраивается с нуля. Это может быть настроено на обновление, но даже в этом случае мы не рекомендуем использовать его для производственных сред.
Есть другой способ. Мы можем определить схему в Schema.sql. При первом забеге нет проблем с этим, но каждый раз, когда приложение запускается, этот скрипт инициализации не выполняется, поскольку таблица данных уже существует. Это требует дополнительной помощи при написании сценариев инициализации и не повторяя работу, которая была выполнена.
Лучшим вариантом является использование библиотеки миграции базы данных. Он использует серию сценариев и записей базы данных, которые использовались и не используют один и тот же сценарий несколько раз. Каждый пакет развертывания приложения содержит эти сценарии, и база данных может соответствовать приложению. Spring Boot обеспечивает автоматическую поддержку конфигурации для двух популярных библиотек миграции базы данных.
Если вы хотите использовать одну из этих библиотек в Spring Boot, вам просто нужно добавить соответствующие зависимости в проект и написать сценарий. Давайте начнем с Flyway.
1. Используйте пролетели, чтобы определить процесс миграции базы данных
Flayway - это очень простая библиотека миграции базы данных с открытым исходным кодом, которая использует SQL для определения миграционных сценариев. Идея состоит в том, что каждый скрипт имеет номер версии, и Flyway выполнит эти сценарии последовательно, чтобы получить базу данных в желаемое состояние. Он также записывает статус выполненного сценария и не будет повторяться. Здесь, в приложении списка чтения, мы начинаем с пустой базы данных без таблиц данных и данных. Таким образом, этот скрипт должен сначала создавать таблицы читателей и книги, включая ограничения внешнего ключа и данные инициализации. Список 8-2 кода-это сценарий пролета из пустой базы данных в доступное состояние.
Первоначальный скрипт базы данных пролета
Создать чтения таблицы (идентификатор последовательного первичного ключа, имя пользователя varchar (25) уникальный, а не нулевой, пароль varchar (25), а не null, полная варчар (50) не нулевой); Создать таблицу (ID Serial Primary Key, автор Varchar (50) не нулевой, описание varchar (1000) не null, ISBN varchar (10) не нулевой, заголовок varchar (250), а не null, reader_username varchar (25) не нулевой, иностранный ключ (reader_userame) Ссылки reader (onsemanme)); Создать последовательность hibernate_sequence; вставьте в чтения (имя пользователя, пароль, полное имя) значения («craig», «пароль», «Craig Walls»);
Как видите, сценарий пролета - SQL. Что заставляет его работать, так это его местоположение и имя файла в трассе. Все сценарии пролетают, следуют спецификации именования, содержащих номера версий, как показано на рисунке 8-1.
У всех сценариев пролета есть имена, которые начинаются с буквы Vally V, за которым следует номер версии сценария. Затем два подчеркивания и описание сценария. Поскольку это первый скрипт во всем процессе миграции, его версия - 1. Описание может быть очень гибким и в основном используется для того, чтобы помочь понять цель сценария. Позже нам нужно добавить новую таблицу в базу данных или добавить новое поле в существующую таблицу данных. Вы можете создать еще один сценарий с версией № 2. Сценарий пролета должен быть размещен в пути /DB /миграции по сравнению с корневым пути приложения. Поэтому в проекте сценарий должен быть размещен в SRC/Main/Resources/DB/Migration. Вам также необходимо установить Spring.jpa.hibernate.ddl-Auto, чтобы Hibernate не создавал таблицы данных. Это связано со следующим содержанием в Application.yml:
Весна: JPA: Hibernate: DDL-Auto: Нет
Все, что осталось, - это добавить Flayway в качестве зависимости проекта. В Градле эта зависимость выглядит так:
Compile ("org.flywaydb: пролетный коррек")В проекте Maven он выглядит так:
<Dependency> <groupid> org.flywayfb </groupid> <ratifactid> пролетающий core </artifactid> </degy Devility>
После того, как приложение будет развернуто и запускается, Spring Boot обнаружит пробел в классе и автоматически настраивает необходимые бобы. Flayway по очереди просматривает сценарии в /дБ /миграцию и запустит эти сценарии, если они не были выполнены. После выполнения каждого скрипта запишите запись в таблицу Schema_version. В следующий раз, когда приложение будет запущено, Flyway сначала рассмотрит записи в Schema_version и пропустит эти сценарии.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.