ECOM 1F0 2018-19 BTB JHipster

= Choix du type de Base De Données = Base De Données basée sur la mémoire (utilisant Docker Compose) :
 * Plus facile à mettre en place
 * MAIS vidée à la fermeture de l'application

Base De Données externe (MariaDB, MySQL, PostGreSQL...) :
 * Nécessite la modification des propriétés de Spring boot : src/main/resources/config/application-*.yml
 * Persistent
 * Personnalisable

= Création des entités = Pour chaque entité créée, nous avons besoin :

D'une table de Base De Données D'un ensemble de changements Liquibase D'une entité JPA D'un dépôt de données JPA Spring D'un controller REST MVC Spring doté des opérations CRUD de base D'un routeur Angular, un composant et un service D'une vue HTML De tests d'intégration De tests de performance

Pour chaque relation créée, nous avons besoin :

D'une clé externe de Base De Données De code spécifique JavaScript et HTML pour gérer cette relation

MAIS JHIPSTER NOUS SAUVE LA VIE : JHipster génère tout le code et les configurations requises, de la vue HTML Angular au changelog Liquibase

Pour cela, plusieurs outils :

jhipster entity  --[options] jhipster entity --help
 * => Entity sub-generator (ligne de commandes)
 * Bref tutoriel
 * Génération depuis un fichier JDL : jhipster import-jdl your-jdl-file.jh
 * Les relations peuvent être créées avant que l'autre partie existe
 * /!\ Les relations doivent être définies dans les deux sens /!\
 * => JHipster UML (outil graphique)
 * Outil graphique rendant la génération plus aisée
 * Installation : npm install -g jhipster-uml
 * Lancement depuis un fichier JDL : jhipster-uml yourFileName.jh


 * => JDL Studio (Utilisation du langage spécifique en ligne)
 * Outil semi-graphique rendant la génération plus aisée
 * L'UML affiché est mis à jour par l'utilisation du langage JDL

= Bon à savoir =
 * Possibilité de tests simples sur les entités avec mvn test
 * Possibilité de lancer l'application avec mvn
 * Type Blob : un objet Blob, Utilisé pour stocker des données binaires. Lorsque ce type est sélectionné, le sous-générateur vous demandera si vous voulez stocker des données binaires génériques, un objet image, ou un CLOB (long texte). Les images seront prises en charges spécifiquement du coté Angular, afin d'être affichée pour l'utilisateur final
 * /!\ Les champs ne peuvent contenir des mots réservés dans les technologies utilisées /!\
 * JHipster génère des tests unitaires qui fonctionnent pour les entités génériques, sans connaissance des règles de validation personnalisées : il est possible que les tests générés ne passent pas les règles de validation. Dans ce cas, il est nécessaire de mettre à jour les valeurs de base utilisées dans les tests unitaires, afin de passer les règles de validation.
 * Les DTO sont une option. Une option que nous souhaitons pour la couche services. En parlant de | services.
 * Les entités peuvent être filtrées en utilisant JPA afin de compléter les fonctionnalités de base de CRUD.
 * La pagination peut être : nulle ; simple (Bootstrap) ; complète (Bootstrap) ou en déroulement infini (directive de déroulement infini)
 * /!\ Le code personnalisé est écrasé lors de la mise à jour des entités /!\

= Sources = Informations tirées de la documentation JHipster :
 * Utilisation de la Base De Données
 * Création d'entités