JHIPSTER est un ensemble d'outils de développement d'application web orienté java. Il permet d'intégrer, avec un minimum de paramétrage manuel, les outils suivants :
Chaque projet jhipster se voit doté d'un fichier jhipster-jdl.jh. Il représente conceptuellement le modèle métier.
Il existe un éditeur graphique nommé “JDL studio” pour définir le modèle conceptuel de données :
http://www.jhipster.tech/jdl-studio/
(ancienne url : https://jhipster.github.io/jdl-studio/)
Cet éditeur permet d'écrire les entités et de visualiser directement leur relations avec les autres entités du modèle. En voici un apercu pour le projet testify-jhi :
# cd <your JHipster application’s root folder> # yo jhipster:entity <AnEntity>
–> génère :
# cd <your JHipster application’s root folder> # yo jhipster:import-jdl your-jdl-file.jh
–> génère : la même chose, pour toutes les entités dans le fichier modèle JDL
Typiquement, il semble possible de générer à partir d'un fichier jdl, pour un projet dont certaines entity et relationship ont déjà été générées.
Il se trouve dans le dossier <Projet>/.jhipster/
On y retrouve, sous format json, pour chaque entité : la traduction des ses champs et de ses relations avec les autres entités.
C'est de ce dossier que jhipster se sert ensuite pour effectuer la génération (java, javascript, liquibase, etc…) : La génération commence par rajouter de nouveaux fichiers json dans le dossier “.jhipster”, décrivant les entitées et leur relations. Puis elle effectue la génération.
J'ai créé la ClasseA et Invitation en Invitation ManyToOne –> ClasseA, puis jhipster:import-jdl
Bidouille : On modifie le fichier JDL : on enlève l'entity ClasseA et la relation avec Invitation, puis à nouveau jhipster:import-jdl
–> L'exécution de l'utilitaire :
–> liquibase:update plante puisque que la table Invitation existe déjà
–> Je fais le test suivant : je retire les anciens fichier changelog suivants et leur référence dans master.xml :
–> Ca ne marche pas non plus, normal il tente de recréer la table Invitation …
–> Je remet les changelogs a l'état cohérent, avant de faire yo jhipster:entity pour supprimer des relations que je ne veux plus
Remarque : pour remettre à l'état cohérent, il faut vérifier que les changelogs sont cohérents, que master.xml pointent bien sur eux, mais aussi que les json du dossier .jhipster soit aussi à un état cohérent.
J'ai du manuellement m'occuper de Invitation.json, qui avait été modifié lors de notre tentative de suppression précédente à partir du fichier JDL …
Je teste les suppressions avec l'outil yo jhipster:entity :
# yo jhipster:entity ClasseA
–> Malheureusment, il ne propose pas de rollback dans les changedlog : il modifie les changedlog existants qui concernant Invitation et Invitation_Contraints ; le changelog de création de la ClasseA est toujours là …
–> Ce qui veut dire qu'il faut peut être supprimer soit même la colonne de la clé étrangère et la contrainte d'intégrité soit même en base.
non ca ne suffira pas, l'analyse de la checksum du changelog de Invitation suffira à indiquer une modif.
–> Donc ce qu'il faudrait faire c'est :
D'autre part, l'outil jhipster:entity ne permet pas de supprimer l'entité ClasseA