 Ok, pouvez-vous m'occuper de moi ? Ok, fine. Ok, ok. Donc, nous avons deux sessions, une session qui est pour un service répliqué de MySQL. Et cette session, qui est une session original, et vous avez une session master, qui est pour le service master, qui donne accès à l'updater et à l'insérer. Donc, vous avez ces deux objets, et de ces deux objets, quand vous créez un objecte session, vous pouvez rouler les queries seulement. Et quand vous créez un objecte master session, vous pouvez aussi commencer la transaction, rouler l'insert, l'update et la délite. Et certaines opérations ne sont pas disponibles sur le objecte session, ce qui signifie que, à un point de développement, vous ne pouvez pas faire des erreurs. Donc, nous allons voir une simple query. En même temps, comme je l'ai dit, c'est toujours intéressant de rouler des simple queries SQL. Donc, ce que vous allez faire avec votre session, c'est que vous créez un statement. Et ici, pour exemple, je vais rouler la query, sélectionner tout, dans un table d'utilisation, où le nom est un nombre spécifique que je veux rechercher. Donc, c'est mon statement query. Ce statement, je vais utiliser le paramètre bind pour indiquer quel paramètre je veux rechercher. Donc, cela va configurer le paramètre du nom, qui est ici. Et puis, quand mon paramètre est prêt, je dois juste l'exécuter. Donc, tout cela est très proche de ce que vous avez dans Java, en fait. Et puis, quand votre statement est exécuté, vous pouvez l'interroger. Donc, vous avez, comme des éléments d'opérations, qui vous expliquent si vous avez encore quelques mots dans votre statement. Et puis, vous pouvez obtenir des éléments, des columns, un par un, comme vous voulez. Et quand vous êtes prêts, vous appelez le next statement et tout. Donc, cela est très proche de ce que vous avez dans Java. Mais, il y a des difficultés avec cet approche. Si vous faites des erreurs dans des columns, si vous pouvez faire des erreurs dans les types, quand vous avez des valeurs, et aussi, quand vous voulez augmenter quelque chose, vous pouvez aussi faire des erreurs quand vous insertez des valeurs dans la base. Donc, la solution est de mapper les résultats que j'ai présentés avant, directement dans la base d'Ada et directement dans la base d'Ada. Donc, mapping de sélection dans la base d'Ada est en fait simple. J'ai ce simple statement de sélection qui renseigne 3 columns, id et email. Je vais mapper un record, un simple record d'Ada avec un email id nommé. Chaque d'entre eux sont fortement types. Edo identifier c'est juste un numéro et on a un ring pour email et name. C'est une autre chose. La deuxième chose c'est qu'on veut une liste de ce type. Donc, nous devons juste l'installer l'infotype et nous avons une liste de l'infotype et nous avons une liste de l'infotage et nous avons une liste d'opérations que nous pouvons appuyer et nous allons faire la query et ensuite mapper les résultats directement dans nos vectors de database. Donc, tout cela en fait est généré et ce qui est de la modélisation de database c'est le processus que vous décrivez dans un langage ou un autre votre modèle database donc vous pouvez décriver votre modèle avec UML ou vous pouvez décriver votre modèle database avec XML avec hibernate XML ou en YAML avec doctrine PHP vous avez 3 technologies que vous pouvez utiliser pour décriver quelles sont vos tables et quelles sont les containers. Toutes ces modèles sont créées par Dynamo qui est un outil et le outil en fait génère plusieurs choses je ne parlerai pas de documentation il génère les modèles packages et pour les modèles packages ce que vous utilisez pour accéder votre data directement dans AIDAR et pas dans SQL le générateur aussi génère SQL pour que, de la modélisation que vous avez défini vous avez immédiatement tous les statements SQL qui vous permettent de créer vos tables de database avec de bons columns un exemple en YAML donc c'est la description de votre database et sur ce côté nous avons la description donc ici j'ai 2 types 2 tables une table d'utilisation une table d'email il y a des propres et ce que vous voyez c'est des stereotypes pour des classifications pour l'objectif pk est de la première clé donc ça signifie que c'est la première clé de ma table et ici, nous avons des relations donc j'ai fait la relation de l'utiliseur et d'un email donc il y a un email donc il y a cette relation d'email et un email est associé avec un utilisateur de cette, nous générons un code le package est un petit peu plus long parce qu'il y a 2 types 1 type public et 1 type private le type public est la référence d'un email d'utilisation c'est la référence qui représente votre rôle dans votre table de database et il y a des opérations accessoires et d'autres opérations comme Save, Load, Fan, Delete etc pour vous aider à populer votre objectif et à récupérer aussi de la database l'email l'implementation core est en fait éden dans l'implementation d'email qui est le type private et cet type private contiendra tous les columns qui sont présentes et incluant la relation et quand vous modifisez un nom pour exemple il va s'agir si le fil est modifié ou pas pour utiliser cet modèle c'est très simple vous avez juste à déclarer votre variable ici je déclare l'instance je populerai votre nom et puis je sauverai cet utilisateur par la session de database ce qui va arriver c'est que par calling user.save le framework va générer ce statement c'est un statement insert donc il va mettre dans le database ce que j'ai créé similarly nous créons l'email donc vous avez un second insert et maintenant j'ai mon email et mon utilisateur et je veux linker les deux objets donc j'ai juste à coller user.save et les deux objets sont linked et j'ai juste à sauver et ici ce que le framework fait c'est qu'il sait que je n'ai pas modifié le nom je n'ai pas modifié le statut je n'ai pas modifié le nom donc ce qui change c'est seulement l'email et le statut et ce que nous faisons c'est juste d'updater les mots qui ont été modifiés le dernier step c'est que nous avons un bonus avec ce framework database auditing database auditing c'est le processus par lequel vous voulez identifier ce qui est modifié dans le database quand vous modifiez le nom quand vous modifiez quelque chose quand vous modifiez les fields et vous voulez être notifié dynamiquement quand ces éléments sont modifiés par appliquer un stéréotype ou par dire que ce field est auditable le framework va générer des codes différents et quand la saison opération est codée il sera appelé le manager audit qui va vous dire que cet objectif est modifié et sur cet objectif on modifie le nom il a de nouvelles valeurs et vous pouvez faire l'auditing sur cet objectif et c'est mon slide donc générer le database en fait générer le modèle aide à écrire le bon software parce que vous faites moins d'erreurs dans certains objectifs moins d'erreurs parce que vous avez un fort type dans les requêtes de SQL que vous utilisez dynamo génère toutes les codes pour vous et il a beaucoup de flexibilité pour que vous puissiez ajouter votre propre type et le guide de programme est aussi disponible merci vous devez générer le modèle et la table et vous devez modifier le modèle de base donc la question est comment modifier ce qui se passe quand le modèle de base est changé quand le modèle de base est changé vous devez générer le code et en fait c'est pour frein en fait dans le modèle de UML vous vous devez juste modifier le modèle de UML en ajoutant des columns en ajoutant des roses et tout et quand vous faites ça vous n'oubliez pas de l'adacode parce que vous vous devez générer et refaire et si il y a des problèmes le compiler, le compiler vous devez changer ce type votre application ne va pas n'importe quoi parce que vous devez changer le type de colombre de l'intégrité à l'intérieur donc c'est pour l'adapte c'est très clair ce qui est plus complexe c'est sur le côté de la base et ici vous devez manually quand vous savez que vous allez de 1 modèle de modèle A à modèle B vous devez dire ce que j'ai fait donc vous devez gérer le script de Microsoft le script de Microsoft n'est pas supporté au moins vous devez le faire manualement Ok, merci pour cette belle présentation et pour l'adapte donc je voulais c'est un petit annoncement mais pour cela vous devez savoir qu'il y a d'autres projets qui ont disparu par Olivier Henley en Canada donc il a déjà mis un bunch d'outils je voulais vérifier si votre projet est déjà listé sur cette ressource si pas, je vais toucher parce que c'est exactement l'un des choses qui doit vraiment être listé je n'ai pas d'accord avec tout ça c'est une ressource il y a beaucoup d'autres projets beaucoup d'autres projets mais ce n'est pas le centre de Github même si c'est posté sur Github ce projet est déjà listé sur adaic.org c'est un autre registre parce que j'ai vu votre projet et j'ai eu l'impression c'est possible mais si vous n'êtes pas là je vais vérifier j'ai une question technique dans votre projet vous produisez des types de référence et des types d'implementation pourquoi avez-vous deux types de référence ? ok, les objectifs je ne vois pas la raison d'avoir deux quand vous avez juste deux non, en fait la raison est vous pouvez la référence utilise la référence donc ça aide à séparer le data à séparer l'implementation avec plusieurs objectifs la deuxième c'est j'ai supporté la lait la lait est quand vous obtenez d'exemple l'objectif et vous avez une relation à l'email et quand vous lait l'objectif n'est pas lait donc vous avez une référence mais ça n'existe pas donc vous n'avez pas l'implementation et c'est mais ce n'est pas accès