Flyway est connu comme une migration Java DB, mais je n'y ai pas touché, alors je l'ai présenté pendant les vacances du Nouvel An. On a estimé qu'il faudrait 3 heures pour travailler, mais en réalité, cela prend environ 15 minutes.
Les seules étapes nécessaires à son installation sont les suivantes: Facile!
build.gradle
ext {
// Flyway
flywayVersion = "4.1.2" // 2017,0315 dernier
}
dependencies {
// Flyway
compile ("org.flywaydb:flyway-core:$flywayVersion")
}
plugins {
id "org.flywaydb.flyway" version "4.1.2" // 2017,0315 dernier
}
flyway {
user = '' //Nom d'utilisateur DB
url = ''//URL de la base de données
}
Ensuite, déployez les fichiers SQL tels que l'instruction CretateTable ci-dessous.
・ Src / main / resources / db / migration /
Il existe une convention de dénomination pour les noms de fichiers des fichiers à déployer. De plus, il semble que Create Database etc. ne puisse pas être écrit
sql:V1.0__Initial_Setup.sql
CREATE TABLE IF NOT EXISTS ANSWER_INFO_TBL (
NO BIGINT(10) UNSIGNED PRIMARY KEY AUTO_INCREMENT,
TYPE TINYINT(1) NOT NULL,
ANSWERKEY VARCHAR(81) UNIQUE NOT NULL,
KEYHASH VARCHAR(64) UNIQUE NOT NULL ,
CREATE_DATE DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=INNODB DEFAULT CHARSET=UTF8;
CREATE TABLE IF NOT EXISTS SCORE_INFO_TBL (
NO BIGINT(10) UNSIGNED PRIMARY KEY AUTO_INCREMENT,
SCORE MEDIUMINT(7) UNSIGNED DEFAULT 0 NOT NULL,
NAME VARCHAR(64) DEFAULT '' NOT NULL,
MEMO VARCHAR(64) DEFAULT '' NOT NULL,
UPDATE_DATE DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (NO)
REFERENCES ANSWER_INFO_TBL(NO)
ON DELETE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=UTF8;
ALTER TABLE ANSWER_INFO_TBL ADD INDEX INDEX_ANSWERKEY(ANSWERKEY ASC);
ALTER TABLE ANSWER_INFO_TBL ADD INDEX INDEX_KEYHASH(KEYHASH ASC);
Lors du lancement d'une application depuis IntelliJ IDEA, la migration de base de données est effectuée automatiquement.
Lors de la création d'une application, je crée des données inutiles ou je souhaite réinitialiser la base de données. Cependant, je souhaite conserver des données propres ... → Extraire les enregistrements existants qui n'ont pas de problème et les insérer automatiquement après la réinitialisation de la base de données →→ Laissez Flyway le faire!
Si vous démarrez Springboot dans les conditions ci-dessus après avoir supprimé la table, cela automatisera la création de la table et la création de l'enregistrement. Si vous gérez correctement la version des fichiers SQL, les obstacles à la création d'un environnement disparaîtront!
J'ai pu l'introduire en douceur, j'ai donc envie de me repousser, ce que j'avais hésité à présenter. Étant donné que la base de données est réinitialisée fréquemment, j'essaie de ne pas négliger la gestion du fichier sql. De plus, je pense qu'il y a quelques fonctions utiles que je n'ai pas encore vues juste en les introduisant, donc je les ajouterai dès qu'elles seront découvertes. De plus, il semble qu'il y ait une balise article de Flyway, donc je pense que vous pouvez la suivre.
Lors du passage du type Date au type LocalDate dans l'entité JPA Il semble que vous deviez utiliser les techniques suivantes
WebApp.java
@SpringBootApplication
@Import(Domain.class)
@EntityScan(basePackageClasses = {WebApp.class, Jsr310JpaConverters.class})
@EnableScheduling
public class WebApp extends SpringBootServletInitializer {
public static void main(String[] args) {
new SpringApplicationBuilder(WebApp.class)
.profiles("dev")
.run(args);
}
}
L'astuce est que Jsr310JpaConverters.class est la cible de Entity Scan.
Recommended Posts