Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Migrazioni del Database | Lavorare Con I Database
Spring Boot Backend

bookMigrazioni del Database

Questa immagine mostra la progressione delle migrazioni del database attraverso le versioni. Ogni versione riflette le modifiche alla struttura del database, come la creazione di tabelle, la modifica di campi o l'aggiunta/rimozione di colonne, per soddisfare i requisiti dell'applicazione.

Durante lo sviluppo di un'applicazione, potrebbe essere necessario modificare lo schema del database: aggiungere nuove tabelle, aggiornare quelle esistenti, introdurre indici e così via.

Le migrazioni aiutano a gestire queste modifiche in modo sequenziale e organizzato, garantendo l'integrità dei dati e mantenendo lo schema del database allineato con il codice dell'applicazione. Per le migrazioni, utilizzeremo Flyway.

Che cos'è Flyway?

Una delle caratteristiche principali di Flyway è il supporto per la versione delle migrazioni, che consente di tracciare le modifiche alla struttura del database e di ripristinare versioni precedenti se necessario.

Creazione di una migrazione con Flyway

Per iniziare, aggiungere la dipendenza Flyway al proprio progetto Spring Boot. Poiché si utilizza Maven, aggiungere la seguente dipendenza al file pom.xml:

Aggiungeremo anche un'altra dipendenza JPA, che funziona insieme a Flyway. Approfondiremo JPA in modo più dettagliato in seguito.

Questa dipendenza ci aiuterà a integrare Flyway nel nostro progetto! Ma non è tutto, dobbiamo ancora configurarlo!

Naturalmente, Flyway deve sapere con quale database lavorerà, quindi dobbiamo specificare esplicitamente il database e fornire le credenziali di accesso.

Le configurazioni principali possono essere impostate in application.properties:

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

È necessario specificare url, user e password per consentire a Flyway di interagire con il nostro database.

Tuttavia, per evitare di inserire questi valori più volte, è possibile riferirsi ad essi tramite altri parametri utilizzando la sintassi ${}.

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

Nel capitolo precedente, è stato creato un database my_database e aggiunta una tabella book. Tuttavia, ora è possibile eliminare la tabella book poiché verrà creata tramite una migrazione.

Ora tutto è pronto per creare la nostra prima migrazione nell'applicazione! È necessario creare una cartella db all'interno della directory resources e, al suo interno, creare un'altra cartella chiamata migration. Il percorso completo dovrebbe essere: src/main/resources/db/migration.

Nella directory migration, ora è possibile creare file in cui definire le modifiche. Il formato del file deve essere V<version>__<description>.sql.

V1__create_table_books.sql

Le migrazioni vengono applicate nell'ordine delle loro versioni. La numerazione delle versioni deve essere sequenziale e senza interruzioni. Ad esempio, se sono presenti le migrazioni V1__init.sql e V2__add_column.sql, la migrazione successiva dovrà essere V3__another_change.sql.

All'interno del file di migrazione, è possibile scrivere script SQL per definire la struttura del database, creare nuove tabelle, colonne, ecc.

Scriviamo ora lo script per la creazione della tabella books, che abbiamo creato manualmente nel capitolo precedente, all'interno del nostro file V1__create_table_books.sql.

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

È possibile aggiungere un parametro al file application.properties che specifica dove si trovano le migrazioni, in modo che Flyway conosca il percorso esatto dei file di migrazione:

spring.flyway.locations=classpath:db.migration

Dopo questo, eseguire l'applicazione e si dovrebbe vedere la tabella creata con i campi che hai specificato nella migrazione!

Non è più possibile modificare la prima versione della migrazione. Per ogni modifica alla tua tabella, sarà necessario creare un nuovo file di migrazione e aggiungere il nuovo script lì!

Perché le Migrazioni sono Importanti?

Le migrazioni sono necessarie per una gestione ordinata delle modifiche nel database, preservando la cronologia e consentendo rollback quando necessario.

Aiutano a sincronizzare la struttura del database tra i vari ambienti come sviluppo, test e produzione, oltre a automatizzare il processo di aggiornamento, ridurre il rischio di errori e garantire che lo schema del database rimanga coerente con il codice dell'applicazione.

Ogni migrazione inoltre documenta le modifiche specifiche, rendendo più semplice comprendere e mantenere lo schema del database.

Sommario

L'utilizzo di Flyway semplifica e automatizza il processo di gestione delle modifiche al database, portando a uno sviluppo applicativo più affidabile ed efficiente.

1. Che cos'è una migrazione del database?

2. Qual è il ruolo delle versioni di migrazione?

question mark

Che cos'è una migrazione del database?

Select the correct answer

question mark

Qual è il ruolo delle versioni di migrazione?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 3

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

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

bookMigrazioni del Database

Scorri per mostrare il menu

Questa immagine mostra la progressione delle migrazioni del database attraverso le versioni. Ogni versione riflette le modifiche alla struttura del database, come la creazione di tabelle, la modifica di campi o l'aggiunta/rimozione di colonne, per soddisfare i requisiti dell'applicazione.

Durante lo sviluppo di un'applicazione, potrebbe essere necessario modificare lo schema del database: aggiungere nuove tabelle, aggiornare quelle esistenti, introdurre indici e così via.

Le migrazioni aiutano a gestire queste modifiche in modo sequenziale e organizzato, garantendo l'integrità dei dati e mantenendo lo schema del database allineato con il codice dell'applicazione. Per le migrazioni, utilizzeremo Flyway.

Che cos'è Flyway?

Una delle caratteristiche principali di Flyway è il supporto per la versione delle migrazioni, che consente di tracciare le modifiche alla struttura del database e di ripristinare versioni precedenti se necessario.

Creazione di una migrazione con Flyway

Per iniziare, aggiungere la dipendenza Flyway al proprio progetto Spring Boot. Poiché si utilizza Maven, aggiungere la seguente dipendenza al file pom.xml:

Aggiungeremo anche un'altra dipendenza JPA, che funziona insieme a Flyway. Approfondiremo JPA in modo più dettagliato in seguito.

Questa dipendenza ci aiuterà a integrare Flyway nel nostro progetto! Ma non è tutto, dobbiamo ancora configurarlo!

Naturalmente, Flyway deve sapere con quale database lavorerà, quindi dobbiamo specificare esplicitamente il database e fornire le credenziali di accesso.

Le configurazioni principali possono essere impostate in application.properties:

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

È necessario specificare url, user e password per consentire a Flyway di interagire con il nostro database.

Tuttavia, per evitare di inserire questi valori più volte, è possibile riferirsi ad essi tramite altri parametri utilizzando la sintassi ${}.

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

Nel capitolo precedente, è stato creato un database my_database e aggiunta una tabella book. Tuttavia, ora è possibile eliminare la tabella book poiché verrà creata tramite una migrazione.

Ora tutto è pronto per creare la nostra prima migrazione nell'applicazione! È necessario creare una cartella db all'interno della directory resources e, al suo interno, creare un'altra cartella chiamata migration. Il percorso completo dovrebbe essere: src/main/resources/db/migration.

Nella directory migration, ora è possibile creare file in cui definire le modifiche. Il formato del file deve essere V<version>__<description>.sql.

V1__create_table_books.sql

Le migrazioni vengono applicate nell'ordine delle loro versioni. La numerazione delle versioni deve essere sequenziale e senza interruzioni. Ad esempio, se sono presenti le migrazioni V1__init.sql e V2__add_column.sql, la migrazione successiva dovrà essere V3__another_change.sql.

All'interno del file di migrazione, è possibile scrivere script SQL per definire la struttura del database, creare nuove tabelle, colonne, ecc.

Scriviamo ora lo script per la creazione della tabella books, che abbiamo creato manualmente nel capitolo precedente, all'interno del nostro file V1__create_table_books.sql.

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

È possibile aggiungere un parametro al file application.properties che specifica dove si trovano le migrazioni, in modo che Flyway conosca il percorso esatto dei file di migrazione:

spring.flyway.locations=classpath:db.migration

Dopo questo, eseguire l'applicazione e si dovrebbe vedere la tabella creata con i campi che hai specificato nella migrazione!

Non è più possibile modificare la prima versione della migrazione. Per ogni modifica alla tua tabella, sarà necessario creare un nuovo file di migrazione e aggiungere il nuovo script lì!

Perché le Migrazioni sono Importanti?

Le migrazioni sono necessarie per una gestione ordinata delle modifiche nel database, preservando la cronologia e consentendo rollback quando necessario.

Aiutano a sincronizzare la struttura del database tra i vari ambienti come sviluppo, test e produzione, oltre a automatizzare il processo di aggiornamento, ridurre il rischio di errori e garantire che lo schema del database rimanga coerente con il codice dell'applicazione.

Ogni migrazione inoltre documenta le modifiche specifiche, rendendo più semplice comprendere e mantenere lo schema del database.

Sommario

L'utilizzo di Flyway semplifica e automatizza il processo di gestione delle modifiche al database, portando a uno sviluppo applicativo più affidabile ed efficiente.

1. Che cos'è una migrazione del database?

2. Qual è il ruolo delle versioni di migrazione?

question mark

Che cos'è una migrazione del database?

Select the correct answer

question mark

Qual è il ruolo delle versioni di migrazione?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 3
some-alt