В ходе разработки и дальнейшей поддержки приложения база данных меняется: добавляются, удаляются таблицы, столбцы и т. д. Чтобы было проще отслеживать изменения, существует 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
Вместе с данным постом часто просматривают:
-
Вышла Версия Мечты V1.0.2
19 Oct, 24 -
Определение Времени Безотказной Работы Сайта
19 Oct, 24 -
Dos-Эксплойт Для Движка Webkit
19 Oct, 24