Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Databasemigreringer | Arbejde med Databaser
Spring Boot Backend

bookDatabasemigreringer

Dette billede viser udviklingen af databasemigreringer på tværs af versioner. Hver version afspejler ændringer i databasens struktur, såsom oprettelse af tabeller, ændring af felter eller tilføjelse/fjernelse af kolonner, for at følge med applikationens krav.

Ved udvikling af en applikation kan det være nødvendigt at ændre databaseskemaet: tilføje nye tabeller, opdatere eksisterende, introducere indekser osv.

Migreringer hjælper med at håndtere disse ændringer på en sekventiel og organiseret måde, hvilket sikrer dataintegritet og holder databaseskemaet i overensstemmelse med applikationens kode. Til migreringer vil vi benytte Flyway.

Hvad er Flyway?

En af de centrale funktioner ved Flyway er dets understøttelse af migrationsversionering, hvilket gør det muligt at spore ændringer i databasens struktur og rulle tilbage til tidligere versioner om nødvendigt.

Oprettelse af en migration med Flyway

For at komme i gang skal du tilføje Flyway-afhængigheden til dit Spring Boot-projekt. Da vi bruger Maven, skal du tilføje følgende afhængighed til din pom.xml-fil:

Vi vil også tilføje en anden JPA-afhængighed, som fungerer sammen med Flyway. Vi gennemgår JPA i mere detalje senere.

Denne afhængighed hjælper os med at integrere Flyway i vores projekt! Men det er ikke alt, vi skal stadig konfigurere det!

Selvfølgelig skal Flyway vide, hvilken database den skal arbejde med, så vi skal eksplicit angive databasen og give adgangsoplysninger.

De primære konfigurationer kan angives i application.properties:

spring.flyway.url=jdbc:mysql://localhost:3306/my_database
spring.flyway.user=root
spring.flyway.password={your_password}

Vi skal angive url, user og password for at give Flyway mulighed for at arbejde med vores database.

For at undgå at indtaste disse værdier flere gange, kan vi referere til dem fra andre parametre ved hjælp af ${} syntaksen.

spring.flyway.url=${spring.datasource.url}
spring.flyway.user=${spring.datasource.username}
spring.flyway.password=${spring.datasource.password}

spring.datasource.url=jdbc:mysql://localhost:3306/my_database
spring.datasource.username=root
spring.datasource.password={your_password}
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

I forrige kapitel oprettede vi en my_database database og tilføjede en book tabel til den. Nu kan vi dog slette book tabellen, da den vil blive oprettet gennem en migration.

Nu er alt klart til at oprette vores første migration i applikationen! Vi skal oprette en db-mappe inde i resources-mappen, og inden i denne mappe skal vi oprette endnu en, der hedder migration. Den fulde sti skal se sådan ud: src/main/resources/db/migration.

I migrationsmappen kan vi nu oprette filer, hvor vi definerer vores ændringer. Filformatet skal være V<version>__<description>.sql.

V1__create_table_books.sql

Migrationer anvendes i rækkefølge efter deres versioner. Versionsnummereringen skal være sekventiel og uden huller. For eksempel, hvis du har migrationer V1__init.sql og V2__add_column.sql, skal næste migration være V3__another_change.sql.

Inde i migrationsfilen kan du skrive SQL-scripts for at definere databasens struktur, oprette nye tabeller, kolonner osv.

Lad os skrive scriptet til oprettelse af books-tabellen, som vi manuelt oprettede i forrige kapitel, i vores V1__create_table_books.sql-fil.

create table book
(
    id varchar(255) not null primary key,
    name varchar(255) not null,
    author varchar(255) null,
    price decimal(10, 2) null
);

Du kan også tilføje en parameter til application.properties-filen, der angiver, hvor migrationerne er placeret, så Flyway kender den præcise sti til migrationsfilerne:

spring.flyway.locations=classpath:db.migration

Herefter kør applikationen, og du bør se at tabellen er oprettet med de felter, du har angivet i migrationen!

Du kan ikke længere ændre den første version af migrationen. For hver ændring af din tabel skal du oprette en ny migrationsfil og tilføje det nye script der!

Hvorfor er migrationer vigtige?

Migrationer er nødvendige for ordentlig håndtering af ændringer i databasen, bevarelse af historik og mulighed for tilbageførsel efter behov.

De hjælper med at synkronisere databasestrukturen på tværs af forskellige miljøer såsom udvikling, test og produktion, samtidig med at de automatiserer opdateringsprocessen, reducerer risikoen for fejl og sikrer, at databaseskemaet forbliver konsistent med applikationskoden.

Hver migration dokumenterer også specifikke ændringer, hvilket gør det nemmere at forstå og vedligeholde databaseskemaet.

Resumé

Brugen af Flyway forenkler og automatiserer processen med håndtering af databaseændringer, hvilket fører til mere pålidelig og effektiv applikationsudvikling.

1. Hvad er en database-migrering?

2. Hvilken rolle spiller migrationsversioner?

question mark

Hvad er en database-migrering?

Select the correct answer

question mark

Hvilken rolle spiller migrationsversioner?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 3

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Awesome!

Completion rate improved to 3.45

bookDatabasemigreringer

Stryg for at vise menuen

Dette billede viser udviklingen af databasemigreringer på tværs af versioner. Hver version afspejler ændringer i databasens struktur, såsom oprettelse af tabeller, ændring af felter eller tilføjelse/fjernelse af kolonner, for at følge med applikationens krav.

Ved udvikling af en applikation kan det være nødvendigt at ændre databaseskemaet: tilføje nye tabeller, opdatere eksisterende, introducere indekser osv.

Migreringer hjælper med at håndtere disse ændringer på en sekventiel og organiseret måde, hvilket sikrer dataintegritet og holder databaseskemaet i overensstemmelse med applikationens kode. Til migreringer vil vi benytte Flyway.

Hvad er Flyway?

En af de centrale funktioner ved Flyway er dets understøttelse af migrationsversionering, hvilket gør det muligt at spore ændringer i databasens struktur og rulle tilbage til tidligere versioner om nødvendigt.

Oprettelse af en migration med Flyway

For at komme i gang skal du tilføje Flyway-afhængigheden til dit Spring Boot-projekt. Da vi bruger Maven, skal du tilføje følgende afhængighed til din pom.xml-fil:

Vi vil også tilføje en anden JPA-afhængighed, som fungerer sammen med Flyway. Vi gennemgår JPA i mere detalje senere.

Denne afhængighed hjælper os med at integrere Flyway i vores projekt! Men det er ikke alt, vi skal stadig konfigurere det!

Selvfølgelig skal Flyway vide, hvilken database den skal arbejde med, så vi skal eksplicit angive databasen og give adgangsoplysninger.

De primære konfigurationer kan angives i application.properties:

spring.flyway.url=jdbc:mysql://localhost:3306/my_database
spring.flyway.user=root
spring.flyway.password={your_password}

Vi skal angive url, user og password for at give Flyway mulighed for at arbejde med vores database.

For at undgå at indtaste disse værdier flere gange, kan vi referere til dem fra andre parametre ved hjælp af ${} syntaksen.

spring.flyway.url=${spring.datasource.url}
spring.flyway.user=${spring.datasource.username}
spring.flyway.password=${spring.datasource.password}

spring.datasource.url=jdbc:mysql://localhost:3306/my_database
spring.datasource.username=root
spring.datasource.password={your_password}
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

I forrige kapitel oprettede vi en my_database database og tilføjede en book tabel til den. Nu kan vi dog slette book tabellen, da den vil blive oprettet gennem en migration.

Nu er alt klart til at oprette vores første migration i applikationen! Vi skal oprette en db-mappe inde i resources-mappen, og inden i denne mappe skal vi oprette endnu en, der hedder migration. Den fulde sti skal se sådan ud: src/main/resources/db/migration.

I migrationsmappen kan vi nu oprette filer, hvor vi definerer vores ændringer. Filformatet skal være V<version>__<description>.sql.

V1__create_table_books.sql

Migrationer anvendes i rækkefølge efter deres versioner. Versionsnummereringen skal være sekventiel og uden huller. For eksempel, hvis du har migrationer V1__init.sql og V2__add_column.sql, skal næste migration være V3__another_change.sql.

Inde i migrationsfilen kan du skrive SQL-scripts for at definere databasens struktur, oprette nye tabeller, kolonner osv.

Lad os skrive scriptet til oprettelse af books-tabellen, som vi manuelt oprettede i forrige kapitel, i vores V1__create_table_books.sql-fil.

create table book
(
    id varchar(255) not null primary key,
    name varchar(255) not null,
    author varchar(255) null,
    price decimal(10, 2) null
);

Du kan også tilføje en parameter til application.properties-filen, der angiver, hvor migrationerne er placeret, så Flyway kender den præcise sti til migrationsfilerne:

spring.flyway.locations=classpath:db.migration

Herefter kør applikationen, og du bør se at tabellen er oprettet med de felter, du har angivet i migrationen!

Du kan ikke længere ændre den første version af migrationen. For hver ændring af din tabel skal du oprette en ny migrationsfil og tilføje det nye script der!

Hvorfor er migrationer vigtige?

Migrationer er nødvendige for ordentlig håndtering af ændringer i databasen, bevarelse af historik og mulighed for tilbageførsel efter behov.

De hjælper med at synkronisere databasestrukturen på tværs af forskellige miljøer såsom udvikling, test og produktion, samtidig med at de automatiserer opdateringsprocessen, reducerer risikoen for fejl og sikrer, at databaseskemaet forbliver konsistent med applikationskoden.

Hver migration dokumenterer også specifikke ændringer, hvilket gør det nemmere at forstå og vedligeholde databaseskemaet.

Resumé

Brugen af Flyway forenkler og automatiserer processen med håndtering af databaseændringer, hvilket fører til mere pålidelig og effektiv applikationsudvikling.

1. Hvad er en database-migrering?

2. Hvilken rolle spiller migrationsversioner?

question mark

Hvad er en database-migrering?

Select the correct answer

question mark

Hvilken rolle spiller migrationsversioner?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 3
some-alt