Schreiben Sie Flyway-Rückrufe in Java

Einführung

In einer App, die eine Datenbankmigration mit Gradle und Flyway durchführt Ich habe einen Versuch und Irrtum gemacht, als ich den Rückruf in Java schrieb.

Unter dem Strich sollten Sie die Callback-Klasse kompilieren, bevor Sie die Flyway-Task ausführen.

Den diesmal verifizierten Code finden Sie im folgenden Repository. https://github.com/mahaker/flyway-callback-java

Umgebung

Java: OpenJDK 11 Gradle: 5.2.1 flyway: 6.4.2 Postgres: 12

Schreiben Sie den Rückruf in Java

Erstellen Sie eine Klasse, die die Schnittstelle org.flywaydb.core.api.callback.Callback implementiert Setzen Sie die Eigenschaft flyway.callbacks auf einen vollständig qualifizierten Namen. https://flywaydb.org/documentation/api/hooks#java-based-callbacks

Stellen Sie außerdem sicher, dass die Klassenaufgabe vor der Flyway-Aufgabe ausgeführt wird. * Dies ist wichtig </ b> (Um genau zu sein, ist es eine kompilierte Java-Aufgabe?)

FillTestData.java


package db.migration;

import java.sql.PreparedStatement;

import org.flywaydb.core.api.callback.Callback;
import org.flywaydb.core.api.callback.Context;
import org.flywaydb.core.api.callback.Event;

public class FillTestData implements Callback {

    @Override
    public boolean supports(Event event, Context context) {
        return Event.AFTER_MIGRATE.equals(event);
    }

    @Override
    public boolean canHandleInTransaction(Event event, Context context) {
        return false;
    }

    @Override
    public void handle(Event event, Context context) {
        try (
            final PreparedStatement statement = context
                .getConnection()
                .prepareStatement("INSERT INTO PERSON(ID, NAME, AGE) VALUES (1, 'userA', 20), (2, 'userB', 22)")
        ) {
            statement.execute();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

build.gradle


//Auszug nur was Sie brauchen
plugins {
    id "org.flywaydb.flyway" version "6.4.2"
}

group 'org.example'
version '1.0-SNAPSHOT'

sourceCompatibility = 11

flyway {
    url = 'jdbc:postgresql://localhost:15432/exampledb'
    user = 'postgres'
    password = 'example'
    locations = [ 'filesystem:./src/main/resources/db/migration/' ]
    callbacks = [ 'db.migration.FillTestData' ]
}

// !!Wichtig! !!
flywayClean.dependsOn(classes)
flywayMigrate.dependsOn(classes)

Zusammenfassung

Wenn Sie die Migration ausführen, können Sie sehen, dass die Einfügeanweisung ausgeführt wurde.

Diese Methode wurde von einer Person innerhalb der Flugbahn gelehrt. https://github.com/flyway/flyway/issues/2829

Recommended Posts

Schreiben Sie Flyway-Rückrufe in Java
Schreiben Sie Java8-ähnlichen Code in Java8
Änderungen in Java 11
Janken in Java
Umfangsrate in Java
FizzBuzz in Java
Wie schreibe ich Java String # getBytes in Kotlin?
Lesen Sie JSON in Java
Machen Sie einen Blackjack mit Java
Einschränkungsprogrammierung in Java
Setzen Sie Java8 in Centos7
NVL-artiger Typ in Java
Verbinden Sie Arrays in Java
"Hallo Welt" in Java
Aufrufbare Schnittstelle in Java
Kommentare in der Java-Quelle
Azure funktioniert in Java
Formatieren Sie XML in Java
[Java] DB-Migration (Flyway)
Einfache HTML-Spezialchars in Java
Boyer-Moore-Implementierung in Java
Hallo Welt in Java
Verwenden Sie OpenCV mit Java
WebApi-Memorandum mit Java
Typbestimmung in Java
Befehle in Java ausführen (Ping)
Verschiedene Threads in Java
Implementierung der Heap-Sortierung (in Java)
Zabbix API in Java
ASCII-Kunst in Java
Listen in Java vergleichen
POST JSON in Java
Fehler in Java ausdrücken
Erstellen Sie JSON in Java
Datumsmanipulation in Java 8
Was ist neu in Java 8?
Verwenden Sie PreparedStatement in Java
Was ist neu in Java 9,10,11
Parallele Ausführung in Java
Schreiben Sie ABNF in Java und geben Sie die E-Mail-Adresse weiter
Schreiben einer Klasse, die in Java bestellt werden kann Ein kleines Standard-Memo
Schreiben Sie keinen Code, wenn (isAdmin == true) in Java
Schreiben Sie eine Klasse in Kotlin und nennen Sie sie in Java
Versuchen Sie es mit RocksDB mit Java
Vermeiden Sie den Fehler, den Yuma in Java gemacht hat
Holen Sie sich EXIF-Informationen in Java
Bearbeiten von ini in Java: ini4j
Java-Geschichte in dieser Welt
Schreiben Sie die Klassenvererbung in Ruby
Versuchen Sie, JavaScript in Java aufzurufen
Probieren Sie den Funktionstyp in Java aus! ①
Ich habe ein Roulette in Java gemacht.
Schreibverarbeitung in IntelliJ IDEA
Wie schreibe ich einen Java-Kommentar
Implementierung der zweistufigen Authentifizierung in Java
Refactoring: Machen Sie Blackjack in Java
Themenanalyse (LDA) in Java