Projets
Pages enfant
  • 3.3.3 Gestion de la structure de la base de données

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.
Commentaire: Migrated to Confluence 5.3
Astuce
titleRelu

Relecture RB

Sommaire :

Sommaire
maxLevel3

...

Introduction

Important : La gestion de la structure de la base de données est liée à la numérotation des versions de l'application (Cf. 3.3.6 Numérotation des versions)

Création de la structure de la base de données

Il est possible de configurer la couche JPA pour l'autoriser à automatiquement créer (où mettre à jour) la structure de la base de données. Ceci notamment parce que nous utilisons l'implémentation Hibernate de JPA qui offre cette fonctionnalité.

...

La commande batch se lance via :

Bloc de code
languagebash
java -jar -Dconf=/chemin/conf.properties <appli>-batch-<version>.jar init-db

Où la variable d'environnement conf permet de pointer vers un fichier de configuration externe contenant les propriétés suivantes (exemple pour MySQL ici) :

  • jdbc.connection.driver_class=com.mysql.jdbc.Driver (le nom de la Classe pour le driver JDBC)
  • jdbc.connection.url=jdbc:mysql://localhost/test (la chaîne de connexion à la base)
  • jdbc.connection.username=root (le user)
  • jdbc.connection.password=admin (le mot de passe)
  • jpa.database.type=MYSQL (le type de la base. utilisé par JPA pour la génération du SQL)

Mise à jour de la structure de la base de données

Le principe est le même que pour la création de la base de données sauf que la commande à lancer est :

Bloc de code
languagebash
java -jar -Dconf=/chemin/conf.properties <appli>-batch-<version>.jar upgrade-db

Comment ça marche

Les exemples données ici sont consultables dans l'application esup-example.
Le module batch dépend du module example-domain-services pour avoir accès au VersionningService défini dans le fichier domain-services-init.xml du module demain-services.

Les commandes batch

La méthodeMaindispatche vers différente méthodes suivant le paramètre passé :

  • initDb pour init-db
  • upgradeDb pour upgrade-db

Respectivement ces méthodes appellent les méthodes suivantes du VersionningService :

  • initDatabase
  • upgradeDatabase

Le VersionningService est initialisé dans une méthode utilitaire quicom.mysql.jdbc.Driver positionne aussi la variable generateDdl.

Les procédures de mise à jour des données

LeVersionningServicea une méthode interne pour mettre à jour des données de la base (upgradeDatabaseIfNeeded). Elle permet de découper les traitements de mise à jour par version élémentaire. Il suffit ensuite de coder chaque mise à jour sous la forme d'une méthode avec une signature du typevoid upgrade0d0d1(0d0d1 pour 0.0.1 ou 0 dot 0 dot 1).
upgradeDatabase