При разработке и дальнейшей поддержки приложения база данных изменяется: добавляются, удаляются таблицы, столбцы и т.д. Для упрощения отслеживания изменений существует Liquibase. Эта библиотека, в начале запуска приложения решает, надо ли на конкретной базе выполнить конкретные скрипты, или же они в ней уже выполнены.
Каждый раз при добавление или изменение Entity, мы должны добавить новый changSet. Но что если я скажу, что есть плагин, который сам создает changeSetы на основе нашей Entity и уже существующей структуры базы данных?
Нам понадобится java, spring, gradle и liquibase plugin.
Начальные данные
Для начала нужно создать проект и пару простых Entity.
В файл build.gradle добавляем плагин:
plugins {
id 'org.liquibase.gradle' version '2.0.4'
}
Можно так же указать в переменных файл
liquibase {
activities {
main {
changeLogFile "$buildDir/generated-migrations.yaml"
url database.getProperty("dbUrl")
username database.getProperty("dbUsername")
password database.getProperty("dbPassword")
referenceUrl 'hibernate:spring:entity?dialect=org.hibernate.dialect.PostgreSQL10Dialect&hibernate.physical_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy&hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy'
logLevel 'debug'
}
runList = "main"
}
}