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 15:05] maxime170492slam4:orm:etudiants:maxime [2019/08/31 14:21] (Version actuelle) – modification externe 127.0.0.1
Ligne 51: Ligne 51:
  try {  try {
  Ko.kstart();  Ko.kstart();
- KScriptTimer.start(); 
- KScriptTimer.start("KProduit"); 
 </code> \\ </code> \\
 La méthode kstart() correspond au démarrage du test de l'ajout d'un produit dans la base de données La méthode kstart() correspond au démarrage du test de l'ajout d'un produit dans la base de données
Ligne 58: Ligne 56:
 **2) Comment ont été traduits les liens objet entre le membre catégorie et produits entre ces classes dans les tables de la base ?** \\ **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 ?** \\ **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 ?** \\ **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]] //
 +
 +
  
  
Ligne 71: Ligne 190:
  
  
-     
  • slam4/orm/etudiants/maxime.1354629910.txt.gz
  • Dernière modification : il y a 6 ans
  • (modification externe)