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

bookDatabasemigreringer

Dette bildet viser utviklingen av databasemigrasjoner gjennom versjoner. Hver versjon gjenspeiler endringer i databasestrukturen, som opprettelse av tabeller, endring av felt eller legging til/fjerning av kolonner, for å holde tritt med applikasjonens krav.

Ved utvikling av en applikasjon kan det være nødvendig å endre databaseskjemaet: legge til nye tabeller, oppdatere eksisterende, introdusere indekser og lignende.

Migrasjoner hjelper til med å håndtere disse endringene på en sekvensiell og organisert måte, sikrer dataintegritet og holder databaseskjemaet i samsvar med applikasjonens kode. For migrasjoner skal vi bruke Flyway.

Hva er Flyway?

En av de viktigste funksjonene til Flyway er støtten for migrasjonsversjonering, som gjør det mulig å spore endringer i databasestrukturen og rulle tilbake til tidligere versjoner ved behov.

Opprette en migrasjon med Flyway

For å komme i gang, legg til Flyway-avhengigheten i ditt Spring Boot-prosjekt. Siden vi bruker Maven, legg til følgende avhengighet i pom.xml-filen:

Vi vil også legge til en annen JPA-avhengighet, som fungerer sammen med Flyway. Vi kommer til å gå gjennom JPA i mer detalj senere.

Denne avhengigheten vil hjelpe oss å integrere Flyway i vårt prosjekt! Men det er ikke alt, vi må fortsatt konfigurere det!

Selvfølgelig må Flyway vite hvilken database den skal jobbe med, så vi må spesifisere databasen eksplisitt og oppgi tilgangsdetaljer.

De viktigste konfigurasjonene kan settes i application.properties:

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

Vi må angi url, user og password for at Flyway skal fungere med vår database.

For å unngå å skrive inn disse verdiene flere ganger, kan vi referere til dem fra andre parametere ved å bruke ${}-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 kapittel opprettet vi en my_database-database og la til en book-tabell i den. Nå kan vi imidlertid slette book-tabellen, siden den vil bli opprettet gjennom en migrering.

Nå er alt klart for at vi kan opprette vår første migrasjon i applikasjonen! Vi må opprette en db-mappe inne i resources-katalogen, og inni denne mappen oppretter vi enda en som heter migration. Full sti skal se slik ut: src/main/resources/db/migration.

I migrasjonskatalogen kan vi nå opprette filer hvor vi definerer våre endringer. Filformatet skal være V<version>__<description>.sql.

V1__create_table_books.sql

Migrasjoner kjøres i rekkefølge etter versjonene. Versjonsnummereringen må være sekvensiell og uten hull. For eksempel, hvis du har migrasjoner V1__init.sql og V2__add_column.sql, skal neste migrasjon være V3__another_change.sql.

I migrasjonsfilen kan du skrive SQL-skript for å definere strukturen til databasen, opprette nye tabeller, kolonner osv.

La oss skrive skriptet for å opprette books-tabellen, som vi opprettet manuelt i forrige kapittel, i vår 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
);

Det er også mulig å legge til en parameter i application.properties-filen som angir hvor migrasjonene er plassert, slik at Flyway vet nøyaktig sti til migrasjonsfilene:

spring.flyway.locations=classpath:db.migration

Etter dette, kjør applikasjonen, og du skal se at tabellen er opprettet med de feltene du spesifiserte i migrasjonen!

Du kan ikke lenger endre den første versjonen av migrasjonen. For hver endring i tabellen, må du opprette en ny migrasjonsfil og legge til det nye skriptet der!

Hvorfor er migrasjoner viktige?

Migrasjoner er nødvendige for ryddig håndtering av endringer i databasen, bevaring av historikk og mulighet for tilbakerulling ved behov.

De bidrar til å synkronisere databasestrukturen på tvers av ulike miljøer som utvikling, testing og produksjon, samtidig som de automatiserer oppdateringsprosessen, reduserer risikoen for feil, og sikrer at databaseskjemaet forblir konsistent med applikasjonskoden.

Hver migrasjon dokumenterer også spesifikke endringer, noe som gjør det enklere å forstå og vedlikeholde databaseskjemaet.

Sammendrag

Bruk av Flyway forenkler og automatiserer prosessen med håndtering av databaseendringer, noe som fører til mer pålitelig og effektiv applikasjonsutvikling.

1. Hva er en database-migrering?

2. Hvilken rolle spiller migrasjonsversjoner?

question mark

Hva er en database-migrering?

Select the correct answer

question mark

Hvilken rolle spiller migrasjonsversjoner?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 3

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Suggested prompts:

What are the steps to create a migration file with Flyway?

How does Flyway handle versioning and rollbacks?

Can you explain how to configure Flyway in a Spring Boot project?

Awesome!

Completion rate improved to 3.45

bookDatabasemigreringer

Sveip for å vise menyen

Dette bildet viser utviklingen av databasemigrasjoner gjennom versjoner. Hver versjon gjenspeiler endringer i databasestrukturen, som opprettelse av tabeller, endring av felt eller legging til/fjerning av kolonner, for å holde tritt med applikasjonens krav.

Ved utvikling av en applikasjon kan det være nødvendig å endre databaseskjemaet: legge til nye tabeller, oppdatere eksisterende, introdusere indekser og lignende.

Migrasjoner hjelper til med å håndtere disse endringene på en sekvensiell og organisert måte, sikrer dataintegritet og holder databaseskjemaet i samsvar med applikasjonens kode. For migrasjoner skal vi bruke Flyway.

Hva er Flyway?

En av de viktigste funksjonene til Flyway er støtten for migrasjonsversjonering, som gjør det mulig å spore endringer i databasestrukturen og rulle tilbake til tidligere versjoner ved behov.

Opprette en migrasjon med Flyway

For å komme i gang, legg til Flyway-avhengigheten i ditt Spring Boot-prosjekt. Siden vi bruker Maven, legg til følgende avhengighet i pom.xml-filen:

Vi vil også legge til en annen JPA-avhengighet, som fungerer sammen med Flyway. Vi kommer til å gå gjennom JPA i mer detalj senere.

Denne avhengigheten vil hjelpe oss å integrere Flyway i vårt prosjekt! Men det er ikke alt, vi må fortsatt konfigurere det!

Selvfølgelig må Flyway vite hvilken database den skal jobbe med, så vi må spesifisere databasen eksplisitt og oppgi tilgangsdetaljer.

De viktigste konfigurasjonene kan settes i application.properties:

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

Vi må angi url, user og password for at Flyway skal fungere med vår database.

For å unngå å skrive inn disse verdiene flere ganger, kan vi referere til dem fra andre parametere ved å bruke ${}-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 kapittel opprettet vi en my_database-database og la til en book-tabell i den. Nå kan vi imidlertid slette book-tabellen, siden den vil bli opprettet gjennom en migrering.

Nå er alt klart for at vi kan opprette vår første migrasjon i applikasjonen! Vi må opprette en db-mappe inne i resources-katalogen, og inni denne mappen oppretter vi enda en som heter migration. Full sti skal se slik ut: src/main/resources/db/migration.

I migrasjonskatalogen kan vi nå opprette filer hvor vi definerer våre endringer. Filformatet skal være V<version>__<description>.sql.

V1__create_table_books.sql

Migrasjoner kjøres i rekkefølge etter versjonene. Versjonsnummereringen må være sekvensiell og uten hull. For eksempel, hvis du har migrasjoner V1__init.sql og V2__add_column.sql, skal neste migrasjon være V3__another_change.sql.

I migrasjonsfilen kan du skrive SQL-skript for å definere strukturen til databasen, opprette nye tabeller, kolonner osv.

La oss skrive skriptet for å opprette books-tabellen, som vi opprettet manuelt i forrige kapittel, i vår 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
);

Det er også mulig å legge til en parameter i application.properties-filen som angir hvor migrasjonene er plassert, slik at Flyway vet nøyaktig sti til migrasjonsfilene:

spring.flyway.locations=classpath:db.migration

Etter dette, kjør applikasjonen, og du skal se at tabellen er opprettet med de feltene du spesifiserte i migrasjonen!

Du kan ikke lenger endre den første versjonen av migrasjonen. For hver endring i tabellen, må du opprette en ny migrasjonsfil og legge til det nye skriptet der!

Hvorfor er migrasjoner viktige?

Migrasjoner er nødvendige for ryddig håndtering av endringer i databasen, bevaring av historikk og mulighet for tilbakerulling ved behov.

De bidrar til å synkronisere databasestrukturen på tvers av ulike miljøer som utvikling, testing og produksjon, samtidig som de automatiserer oppdateringsprosessen, reduserer risikoen for feil, og sikrer at databaseskjemaet forblir konsistent med applikasjonskoden.

Hver migrasjon dokumenterer også spesifikke endringer, noe som gjør det enklere å forstå og vedlikeholde databaseskjemaet.

Sammendrag

Bruk av Flyway forenkler og automatiserer prosessen med håndtering av databaseendringer, noe som fører til mer pålitelig og effektiv applikasjonsutvikling.

1. Hva er en database-migrering?

2. Hvilken rolle spiller migrasjonsversjoner?

question mark

Hva er en database-migrering?

Select the correct answer

question mark

Hvilken rolle spiller migrasjonsversjoner?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 3
some-alt