slam4:orm:etudiants:maxime

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
slam4:orm:etudiants:maxime [2012/12/04 14:08] maxime170492slam4:orm:etudiants:maxime [2019/08/31 14:21] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 +====== Produits et catégories ======
 +
 **1) Comment est déclarée la table assurant la persistance d’un objet ?** **1) Comment est déclarée la table assurant la persistance d’un objet ?**
  
Ligne 6: Ligne 8:
  
 **2) Comment est déclaré le mapping entre un membre de la classe et un champ de la table relationnelle ?** \\ **2) Comment est déclaré le mapping entre un membre de la classe et un champ de la table relationnelle ?** \\
 +
 +<code java|h code Java>
 +hasMany(KLigne.class);
 +belongsTo(KCategorie.class);
 +</code>
  
 "hasMany(KLigne.class)" un produit correspondant à une ligne, il y a un produit par ligne "belongsTo(KCategorie.class)"  "hasMany(KLigne.class)" un produit correspondant à une ligne, il y a un produit par ligne "belongsTo(KCategorie.class)" 
Ligne 12: Ligne 19:
  
 **3) Comment est déclarée la clé primaire de la table ?**\\ **3) Comment est déclarée la clé primaire de la table ?**\\
 +
 +<code java|h code Java>
 +keyFields="id";
 +</code>
  
 keyFields=“id”; , la clé primaire est déclaré en keyFields \\ keyFields=“id”; , la clé primaire est déclaré en keyFields \\
Ligne 25: Ligne 36:
 **5) Montrez à l’aide d’un schéma (par ex. deux classes liées au dessus de deux tables liées) comment se paramètre le lien bidirectionnel entre deux classes (en spécifiant les éléments à fournir dans le constructeur)** \\ **5) Montrez à l’aide d’un schéma (par ex. deux classes liées au dessus de deux tables liées) comment se paramètre le lien bidirectionnel entre deux classes (en spécifiant les éléments à fournir dans le constructeur)** \\
  
-{{:slam4:orm:etudiants:schema1.png?200|}}+{{:slam4:orm:etudiants:schema_maxime.png?200|}} \\ \\ 
 + 
 +====== Programme de test ====== 
 + 
 +//Analysez le code du programme et répondez aux questions en vous aidant au besoin de la documentation :// \\ 
 + 
 + 
 +**1) À quoi correspond la méthode kstart() ?** \\ 
 + 
 +<code java|h code Java> 
 +public static void main(String[] args) { 
 + Ko.useCache=true; 
 + KCache.loadAllCache(); 
 + try { 
 + Ko.kstart(); 
 +</code> \\ 
 +La méthode kstart() correspond au démarrage du test de l'ajout d'un produit dans la base de données 
 + 
 +**2) Comment ont été traduits les liens objet entre le membre catégorie et produits entre ces classes dans les tables de la base ?** \\ 
 + 
 +Les liens objets entre "catégorie" et "produits" entre ces classes dans les tables de la base de données ont été traduit par le simple fait que l'id de la table "catégorie" s'est mis en clé étrangère de la table "produits". \\ 
 +     
 +**3) Quelles requêtes SQL ont été créées par KObject pour réaliser la persistance ?** \\ 
 + 
 +Afin de réaliser la persistance, KObject a utilisé les requêtes SQL d'insertion suivantes : \\ 
 +(visibles dans la console lors du test) \\ 
 +INSERT INTO categorie(libelle) VALUES('Presse') \\ 
 +INSERT INTO produit(idCategorie,prix,nom) VALUES('19','3.0','Programmez!' \\ 
 + 
 +**4) Que se passe t-il si l'insertion de la catégorie échoue ?** \\ 
 + 
 +En cas d'échec de l'insertion de la catégorie, il est impossible par la suite d'insérer des produits car un produits appartient à une catégorie et ces deux objets sont liés par l'id de la catégorie. 
 + 
 + 
 +====== Chargement d'un objet ======  
 + 
 + 
 +//Observation du chargement d'un objet, par l'intermédiaire de sa clé primaire.// \\ 
 + 
 +**1) Précisez ce que charge exactement KObject lors du chargement d'un Objet** \\ 
 + 
 +Lors du chargement d'un Objet, KObject va charger les catégories mais aussi les objets de ces catégories \\ 
 +SELECT * FROM categorie WHERE categorie.id='1' \\ 
 +KOBJECT : KCategorie.loadFromDb → {id=1} \\ 
 +KOBJECT : KConstraintHasMany.load → class metier.KProduit \\ 
 +SELECT * FROM produit WHERE idCategorie='1' \\ 
 +KOBJECT : KProduit.loadFromDb → {id=52} \\ 
 +[...] \\ 
 +KOBJECT : KProduit.loadFromDb → {id=182} \\ 
 + 
 + 
 +**2) Précisez comment sont chargées les instances liées à un objet chargé pour les liens belongsTo et hasMany** \\ 
 + 
 +belongsTo: \\ 
 +Pour charger les instances liées à un objet en Many to One, par exemple un produit, KObject va dans un premier temps récupérer le produit à l'aide d'un select. Ensuite KObject va récupérer la catégorie correspondante. \\ 
 +Console: \\ 
 +SQL : KDataBase.sendQuery → SELECT * FROM produit WHERE produit.id='52' \\ 
 +SQL : KDataBase.sendQuery → SELECT * FROM Ligne WHERE idProduit='52' \\ 
 +SQL : KDataBase.sendQuery → SELECT * FROM categorie WHERE id='1' \\ 
 +hasMany: \\ 
 +Pour le cas d'un One To Many KObject va effectuer deux requêtes SQL. Dans un premier temps la catégorie sera chargée ensuite tous les produits appartenant à cette catégorie seront chargés. \\ 
 +Console: \\ 
 +SQL : KDataBase.sendQuery → SELECT * FROM categorie WHERE categorie.id='1' \\ 
 +SQL : KDataBase.sendQuery → SELECT * FROM produit WHERE idCategorie='1' \\ 
 + 
 +**3) En quoi consiste le chargement paresseux de KObject ?** \\ 
 + 
 + 
 +Le chargement dit "paresseux" de KObject consiste a ne pas charger chaque objets d'un objet précis à moins de lui en donner l'instruction. \\ 
 +Exemple : Il n'affichera pas tous les produits d'une catégorie s'il l'utilisateur ne le demande pas. \\ 
 +Un peu comme Quentin .. :-x \\ 
 +====== Chargement de listes d'objets ====== 
 + 
 +//Interrogation de données avec KObject ://  \\ 
 + 
 + 
 +===== Projection ===== 
 + 
 +**1) Interprétez et expliquez le résultat obtenu** \\ 
 + 
 +Voici le résultat obtenu : \\ 
 + 
 +<code java|h code java> 
 +    System.out.println(categories.showWithMask("{libelle}:\n{produits}\n")); 
 +</code>  
 + 
 +Explication : On affiche à l'écran les libellés et les produits des catégories affichés par ordre alphabétique. 
 +===== Sélection ===== 
 + 
 +**1) Combien de requêtes SQL sont exécutées par KObject ?** 
 + 
 +**2) Comment l'interprétez vous ?** 
 + 
 +  
 +//Remplacer le lien belongsTo sur la classe Produit par :// \\ 
 + 
 +<code java |h code Java> 
 +belongsTo(KCategorie.class).setLazy(true); 
 +</code> 
 + 
 +**1) Combien de requêtes SQL sont maintenant exécutées par KObject ?** \\ 
 + 
 + 
 +**2) Comment l'interprétez vous ?** \\ 
 + 
 +//A partir du programme :// \\ 
 + 
 +**1) Interprétez les requêtes SQL exécutées par KObject** \\ 
 + 
 + 
 + 
 +===== Sélection avec distinct et projection =====  
 + 
 + 
 +//A partir du code et de son exécution :// \\ 
 + 
 +**1) Expliquer ce que fait le programme** \\ 
 + 
 + 
 +====== Gestion des commandes ====== 
 + 
 +===== Commande ===== 
 +===== Ligne ===== 
 + 
 +**1) Justifiez l'appel des méthodes permettant de mettre en oeuvre la contrainte d'intégrité multiple** \\ 
 + 
 + 
 +====== Création de commandes ====== 
 + 
 + 
 +**1) Analysez puis commentez chaque ligne (dans le code) de ce programme** \\ 
 + 
 + 
 +**2) Vérifier que l'exécution a effectué les ajouts dans la base de données** \\ 
 + 
 + 
 + 
 +====== Test Web ====== 
 + 
 +... \\ 
 +//Ajouter toutes les classes (servlet) et méthodes nécessaires pour éviter d'avoir à effectuer un quelconque traitement dans les JSP.//  
 + 
 + 
 +Document réalisé par :  
 +--- //[[maxime170492@gmail.com|maxime]] // 
 + 
 + 
 + 
 + 
 + 
 + 
  
  
  • slam4/orm/etudiants/maxime.1354626504.txt.gz
  • Dernière modification : il y a 6 ans
  • (modification externe)