[JAVA] Une histoire sur l'introduction d'Evolutions dans le cadre de jeu

Environnement d'exploitation

Qu'est-ce que les évolutions

Evolustions est un outil de migration de base de données Play Framework. Vous pouvez facilement mettre à jour et partager votre schéma de base de données entre plusieurs développeurs.

Contexte d'introduction

Dans le développement local, plusieurs développeurs ont utilisé leurs bases de données respectives pour ajouter des colonnes et des tables. J'ai utilisé le même code source, mais le schéma de la base de données était différent, je devais donc le mettre à jour manuellement de temps en temps. Faire correspondre les schémas de base de données entre plusieurs développeurs est facile avec Evolutions.

Comment utiliser Evolutions

Configuration des évolutions

Ajout de «évolutions» à la liste des bibliothèques dépendantes dans build.sbt

build.sbt


name := """play-evolutions-sample"""

version := "1.0-SNAPSHOT"

lazy val root = (project in file(".")).enablePlugins(PlayJava)

scalaVersion := "2.11.7"

libraryDependencies ++= Seq(
  "mysql" % "mysql-connector-java" % "5.1.38",
  javaJdbc,
  cache,
  javaWs,
  evolutions
)

https://gyazo.com/c2fb3c3cd5e366c8b9e0e604334dfc26 Cliquez sur Actualiser le projet en haut à droite

Vérifiez les paramètres dans application.conf

Il est commenté par défaut, mais assurez-vous qu'il n'est pas faux au cas où

application.conf


play.evolutions {
  # You can disable evolutions for a specific datasource if necessary
  #db.default.enabled = false
}

Ou écrivez explicitement db.default.enabled = true

Description de Evolution Script

Créer un annuaire $ mkdir -p conf/evolutions/default Créez et décrivez un fichier SQL qui modifie la base de données sous conf / evolutions / default

Il se compose de deux parties, Ups et Downs, et le contenu à décrire est le suivant.

# --- !Ups

Description de la méthode de conversion de schéma requise(Instruction SQL)


# --- !Downs 

Description de la procédure d'annulation de la conversion ci-dessus(Instruction SQL)

Si vous souhaitez ajouter une nouvelle table factice

1.sql


# --- !Ups
create table dummy(
    id integer not null,
    name varchar(255),
    created_at datetime not null,
    updated_at datetime not null
);

# --- !Downs 
drop table dummy

Si vous souhaitez ajouter une colonne à la table factice

2.sql


# --- !Ups
ALTER TABLE dummy ADD(
    deleted_at datetime not null
);

# --- !Downs
ALTER TABLE dummy DROP(
    deleted_at
);

À propos du nom de fichier

Nommez les fichiers 1.sql pour le premier script, 2.sql pour le second script, et ainsi de suite.

À propos de l'exécution

Exécutez localement avec $ activator run et passez à http: // localhost: 9000 / ʻAppliquez ce script maintenant! `Appuyez sur le bouton pour exécuter le script d'évolution décrit https://gyazo.com/ad537b57cd684f733522cfe19addce03

À propos de Downs

Les downs ne sont pas exécutés manuellement, ils sont exécutés lorsque le contenu d'Ups change. Downs est exécuté avant Ups et, par conséquent, le schéma de la base de données est mis à jour.

Les références

Evolutions - 2.1.x Le code source est ici

Recommended Posts

Une histoire sur l'introduction d'Evolutions dans le cadre de jeu
L'histoire de l'introduction d'un framework sans serveur très semblable à Rails "Ruby on Jets" dans l'environnement de production
Une histoire sur le JDK à l'ère de Java 11
Une histoire sur la création d'un Builder qui hérite du Builder
Remarques sur la portée
Une histoire sur l'utilisation de l'API League Of Legends avec JAVA
Un murmure sur la classe utilitaire
Une histoire sur la difficulté à aligner un cadre de test avec Java 6
Une histoire sur la fabrication d'une calculatrice pour calculer le taux de monticule d'obus
Une histoire sur l'envoi d'une pull request à MinGW pour mettre à jour la version libgr
Devinez le cadre de persistance Java 2017 (3) Reladomo
À propos de l'affichage initial de Spring Framework
L'histoire d'un super débutant participant pour la première fois au concours AtCoder (AtCoder Beginner Contest 140)
À propos du guide de démarrage officiel de Spring Framework
Une histoire sur la prise en charge de Java 11 pour les services Web
L'histoire de l'introduction de la communication Ajax à Ruby
Histoire d'essayer de faire fonctionner le fichier JAVA
Présentation de Rspec, un framework de test pour Ruby on Rails
Un mémo sur le flux de Rails et Vue
L'histoire d'un nouvel ingénieur lisant un programmeur passionné
[Jackson] Une histoire sur la conversion de la valeur de retour du type BigDecimal avec un sérialiseur personnalisé.