| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
| slam4:orm:etudiants:olivier [2012/12/04 16:49] – plateau | slam4:orm:etudiants:olivier [2019/08/31 14:21] (Version actuelle) – modification externe 127.0.0.1 |
|---|
| \\ **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 ?** |
| |
| --> Elle hérite de la classe Kobject. | \\ Elle hérite de la classe Kobject. |
| | <code java|h code Java> |
| | public class KCategorie extends KObject |
| | </code> |
| |
| \\ **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 ?** |
| |
| --> Le mapping entre un membre de la classe et un champ de la table relationnelle est déclaré dans le constructeur en tant que membre. | \\ Le mapping entre un membre de la classe et un champ de la table relationnelle est déclaré dans le constructeur en tant que membre. |
| <code java|h code Java> | <code java|h code Java> |
| hasMany(KLigne.class); | hasMany(KLigne.class); |
| \\ __belongsTo:__ | \\ __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. | \\ 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:__ | \\ Console: |
| \\ SQL : KDataBase.sendQuery -> SELECT * FROM produit WHERE produit.id='50' | \\ SQL : KDataBase.sendQuery -> SELECT * FROM produit WHERE produit.id='50' |
| \\ SQL : KDataBase.sendQuery -> SELECT * FROM Ligne WHERE idProduit='50' | \\ SQL : KDataBase.sendQuery -> SELECT * FROM Ligne WHERE idProduit='50' |
| \\ __hasMany:__ | \\ __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. | \\ 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:__ | \\ Console: |
| \\ SQL : KDataBase.sendQuery -> SELECT * FROM categorie WHERE categorie.id='3' | \\ SQL : KDataBase.sendQuery -> SELECT * FROM categorie WHERE categorie.id='3' |
| \\ SQL : KDataBase.sendQuery -> SELECT * FROM produit WHERE idCategorie='3' | \\ SQL : KDataBase.sendQuery -> SELECT * FROM produit WHERE idCategorie='3' |
| \\ **3)En quoi consiste le chargement paresseux de KObject ?** | \\ **3)En quoi consiste le chargement paresseux de KObject ?** |
| |
| | \\ Le chargement de KObject est qualifié de paresseux parce qu'il ne charge pas tous les objets associé à un objet si on le lui demande pas. |
| | \\ Si on affiche une catégorie KObject n'affichera pas les produits de cette catégorie à moins de le lui demander. |
| | |
| | ===== Quatrième partie ===== |
| | ==== Chargement de listes d'objets: ==== |
| | === Projection === |
| | |
| | |
| | \\ **1)Interprétez et expliquez le résultat obtenu avec cette ligne de code :** |
| | |
| | <code java|h code java> |
| | System.out.println(categories.showWithMask("{libelle}:\n{produits}\n")); |
| | </code> |
| | \\ Cette ligne va permettre de classer l'afficher de tous les produits par catégorie. |
| | \\ Les catégories seront affichées par ordre alphabétique. |
| | \\ Pour chaque catégorie on aura tous les produits correspondant, classés par ordre alphabétique. |
| | |
| | === Selection === |
| | |
| | \\ **1)Combien de requêtes SQL sont exécutées par KObject ?** |
| | |
| | \\ Kobject va effectuer trois requêtes SQL. |
| | \\ La première va permettre de récupérer le produit. |
| | \\ La seconde va récupérer la ligne correspondante. |
| | \\ La troisième récupère la catégorie du produit. |
| | |
| | \\ **2)Comment l'interprétez vous ?** |
| | |
| | \\ Pour faire le lient entre les objets, KObject va procéder par étapes. |
| | \\ D'abord on récupère l'objet pour ensuite, à partir de celui-ci, récupérer les objets en relation. |
| | \\ Exemple du produit, on le récupère pour ensuite savoir à quelle ligne il correspond et à quelle catégorie. |
| | |
| | \\ Remplacement du lien belongsTo sur la classe Produit : |
| | |
| | \\ **3)Combien de requêtes SQL sont maintenant exécutées par KObject ?** |
| | |
| | \\ KObject effectue trois requêtes SQL. |
| | |
| | \\ **4)Comment l'interprétez vous ?** |
| | ....semble pareil...sans soute errreur de ma part... |
| | |
| | \\ 5)Interprétez les requêtes SQL exécutées par KObject suite au Test2: |
| | |
| | \\ KObject effectue une requète de selection de produit appartenant à la catégorie "beauté". |
| | \\ Pour ce faire il va effectuer une requête en spécifiant la jointure entre les tables categorie et produit à l'aide d'un "inner join". |
| | === Sélection avec distinct et projection === |
| | |
| | \\ **1)Expliquer ce que fait le programme:** |
| | |
| | \\ Le programme va rechercher et afficher toutes les catégories ainsi que tous les produits en faisant partis dans lesquelles on peut trouver des produits ayant un pris supérieur à 10. |
| | \\ Le résultat sera classé par catégorie. |
| | |
| | ===== Cinquième partie ===== |
| | ==== Gestion des commandes ==== |
| | \\ **1)Justifiez l'appel des méthodes permettant de mettre en oeuvre la contrainte d'intégrité multiple:** |
| |
| | ==== Création de commandes ==== |