Création des classes métier
Produit :
- id (primary key)
- idCategorie (foreign key references categorie.id)
Ligne :
- idCommande (primary key)
- idProduit (foreign key references produit.id)
Commande :
- id (primary key)
Categorie :
- id (primary key)
Produits et catégories
A partir de l'observation de cette première implémentation et en utilisant à bon escient la documentation, répondez aux questions suivantes :
- Comment est déclarée la table assurant la persistance d’un objet ?
La persistance de la table est assurée par l'héritage de KObject.
- 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é grâce à hasMany et belongsTo.
- Comment est déclarée la clé primaire de la table ?
La clé primaire de la table est déclarée par un "keyFields".
- Réaliser un tableau montrant la correspondance de type (entier, chaine, etc.) entre les propriétés d’une classe et les champs d’une table.
- 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)
Java | SQL | |
---|---|---|
Entier | int | int |
Chaîne de caractères | String | String |
Flottant | Float | Float |
Programme de test
Analysez le code du programme et répondez aux questions en vous aidant au besoin de la documentation :
- À quoi correspond la méthode kstart() ?
La méthode kstart() permet la démarrage de l'application.
- Comment ont été traduits les liens objet entre le membre categorie et produits entre ces classes dans les tables de la base ?
Le lien entre le membre categorie et produits a été traduit par l'affectation d'une catégorie à l'objet produit, ce qui équivalent à une clé étrangère.
- Quelles requêtes SQL ont été créées par KObject pour réaliser la persistance ?
Insertion de la catégorie : INSERT INTO categorie(libelle) VALUES('Presse2')
- Que se passe t-il si l'insertion de la catégorie échoue ?
Si l'insertion de la catégorie échoue, le produit n'est pas inséré.
Insertion du produit : INSERT INTO produit(idCategorie,prix,nom) VALUES('7','10.0','Programmez!!')
Chargement d'un objet
A partir de ces 2 programmes et de leur exécution :
- Précisez ce que charge exactement KObject lors du chargement d'un Objet
KObject va charger tout les objets qui sont en relation, par exemple, pour une catégorie, il chargera tout les produits de cette catégorie :
- Précisez comment sont chargées les instances liées à un objet chargé pour les liens belongsTo et hasMany
- En quoi consiste le chargement paresseux de KObject ?
SQL : KDataBase.sendQuery → SELECT * FROM categorie WHERE categorie.id='13'
SQL : KDataBase.sendQuery → SELECT * FROM produit WHERE idCategorie='13'
Chargement de listes d'objets
A partir du programme :
- Combien de requêtes SQL sont exécutées par KObject ?
- Comment l'interprétez vous ?
- Combien de requêtes SQL sont maintenant exécutées par KObject ?
- Comment l'interprétez vous ?
A partir du programme :
- 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 :
- Expliquer ce que fait le programme