Автоматическое Создание Наборов Изменений Liquibase Из Объектов Java.

В ходе разработки и дальнейшей поддержки приложения база данных меняется: добавляются, удаляются таблицы, столбцы и т. д. Чтобы было проще отслеживать изменения, существует Liquibase. Эта библиотека в начале запуска приложения решает, нужно ли выполнять конкретные скрипты на конкретной базе данных или они уже выполнялись в ней.

Каждый раз, когда мы добавляем или изменяем объект, мы должны добавить новый набор изменений.

Но что, если я скажу вам, что есть плагин, который сам создает наборы изменений на основе нашей сущности и существующей структуры базы данных? Нам понадобится плагин Java, Spring, Gradle и Liquibase. В примерах используется Ломбок , но можно и без этого.

СУБД — PostgreSQL.



Исходные данные

Сначала вам нужно создать проект и пару простых Entities. Базовый класс:
  
   

import lombok.Data; import lombok.NoArgsConstructor; import org.hibernate.annotations.CreationTimestamp; import org.hibernate.annotations.UpdateTimestamp; import javax.persistence.*; import java.time.OffsetDateTime; @Data @NoArgsConstructor @MappedSuperclass public class BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column private Long id; @CreationTimestamp @Column(updatable = false, nullable = false) private OffsetDateTime createDate; @UpdateTimestamp @Column(nullable = false) private OffsetDateTime updateDate; }

Класс хоста:

import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import javax.persistence.*; import java.util.ArrayList; import java.util.List; @Data @NoArgsConstructor @Entity @Table(name = "person") @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class PersonEntity extends BaseEntity { @Column private String name; @OneToMany(mappedBy = "owner", cascade = CascadeType.ALL, orphanRemoval = true)

Теги: #программирование #Администрирование баз данных #java #gradle #gradle-plugin #liquibase
Вместе с данным постом часто просматривают: