Ecrire des rappels de vol en Java

introduction

Une application qui utilise Gradle et flyway pour la migration de base de données J'ai fait un essai et une erreur lorsque j'ai écrit le rappel en Java.

L'essentiel est que vous devez compiler la classe Callback avant d'exécuter la tâche flyway.

Veuillez vous référer au référentiel suivant pour le code vérifié cette fois. https://github.com/mahaker/flyway-callback-java

environnement

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

Ecrire le rappel en Java

ʻOrg.flywaydb.core.api.callback.Callback` Créer une classe qui implémente l'interface Définissez la propriété flyway.callbacks sur un nom complet. https://flywaydb.org/documentation/api/hooks#java-based-callbacks

Assurez-vous également que la tâche de classes est exécutée avant la tâche de voie de migration. * Ceci est important </ b> (Pour être exact, est-ce une tâche de compilation Java?)

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


//Extrait uniquement ce dont vous avez besoin
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' ]
}

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

Résumé

Lorsque vous exécutez la migration, vous pouvez voir que l'instruction d'insertion a été exécutée.

Cette méthode a été enseignée par une personne à l'intérieur de la voie de migration. https://github.com/flyway/flyway/issues/2829

Recommended Posts

Ecrire des rappels de vol en Java
Écrire du code de type Java8 en Java8
Changements dans Java 11
Janken à Java
Taux circonférentiel à Java
FizzBuzz en Java
Comment écrire Java String # getBytes dans Kotlin?
Lire JSON en Java
Faites un blackjack avec Java
Programmation par contraintes en Java
Mettez java8 dans centos7
NVL-ish guy en Java
Joindre des tableaux en Java
"Hello World" en Java
Interface appelable en Java
Commentaires dans la source Java
Fonctions Azure en Java
Formater XML en Java
[Java] Migration de bases de données (Flyway)
Simple htmlspecialchars en Java
Implémentation Boyer-Moore en Java
Hello World en Java
Utiliser OpenCV avec Java
Mémorandum WebApi avec Java
Détermination de type en Java
Exécuter des commandes en Java (ping)
Divers threads en java
Implémentation du tri de tas (en java)
API Zabbix en Java
Art ASCII à Java
Comparer des listes en Java
POST JSON en Java
Exprimer l'échec en Java
Créer JSON en Java
Manipulation de la date dans Java 8
Nouveautés de Java 8
Utiliser PreparedStatement en Java
Nouveautés de Java 9,10,11
Exécution parallèle en Java
Écrivez ABNF en Java et transmettez l'adresse e-mail
Ecrire une classe qui peut être ordonnée en Java Un petit mémo standard
N'écrivez pas de code si (isAdmin == true) en Java
Ecrire une classe en Kotlin et l'appeler en Java
Essayez d'utiliser RocksDB avec Java
Évitez l'erreur que Yuma a donnée en Java
Obtenir des informations EXIF en Java
Modifier ini en Java: ini4j
L'histoire de Java dans ce monde
Écrire l'héritage de classe dans Ruby
Essayez d'appeler JavaScript en Java
Essayez le type fonctionnel en Java! ①
J'ai fait une roulette à Java.
Traitement d'écriture dans IntelliJ IDEA
Comment rédiger un commentaire java
Implémentation de l'authentification en deux étapes en Java
Refactoring: faire du Blackjack en Java
Analyse de sujets (LDA) en Java