Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
slam4:orm:etudiants:mathias [2012/11/29 11:54] – matthias.thomas | slam4:orm:etudiants:mathias [2019/08/31 14:21] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 24: | Ligne 24: | ||
id (primary key) | id (primary key) | ||
| | ||
- | A partir de l' | + | //A partir de l' |
- | 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 ?__ |
@Entity | @Entity | ||
Ligne 32: | Ligne 32: | ||
@Table(name = " | @Table(name = " | ||
| | ||
- | 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 ?__ |
@Column(name = " | @Column(name = " | ||
| | ||
- | 3)Comment est déclarée la clé primaire de la table ? | + | __3)Comment est déclarée la clé primaire de la table ?__ |
@Id | @Id | ||
- | 4)Quelles sont les possibilités de déclaration des clés primaires ? | + | __4)Quelles sont les possibilités de déclaration des clés primaires ?__ |
@Id | @Id | ||
Ligne 46: | Ligne 46: | ||
@GeneratedValue | @GeneratedValue | ||
| | ||
- | 5)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. | + | __5)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.__ |
^Propriété de la Classe ^Champ de la table ^Type ^ | ^Propriété de la Classe ^Champ de la table ^Type ^ | ||
Ligne 54: | Ligne 54: | ||
|float|float|flottant| | |float|float|flottant| | ||
- | 6)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 les annotations) | + | __6)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 les annotations)__ |
+ | |||
+ | Modèle Relationnel : | ||
+ | |||
+ | {{: | ||
+ | |||
+ | __**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 persist() ?__ | ||
+ | |||
+ | persist() est la méthode qui permet d' | ||
+ | |||
+ | __À quoi correspond la méthode commit () ?__ | ||
+ | |||
+ | La méthode commit() permet de transmettre les objets à synchroniser à la base de données et de les y ajouter. | ||
+ | |||
+ | __Comment ont été traduits les liens objet entre le membre categorie et produits entre ces classes dans les tables de la base ?__ | ||
+ | |||
+ | Ces liens sont représentés par une clé étrangère dans la table produits. Pour le produit " | ||
+ | |||
+ | __Quelles requêtes SQL ont été créées par Hibernate pour réaliser la persistance ?__ | ||
+ | |||
+ | Hibernate: | ||
+ | insert | ||
+ | into | ||
+ | Categorie | ||
+ | (libelle) | ||
+ | values | ||
+ | (?) | ||
+ | Hibernate: | ||
+ | insert | ||
+ | into | ||
+ | Produit | ||
+ | (idCategorie, | ||
+ | values | ||
+ | (?, ?, ?, ?) | ||
+ | |||
+ | __Pourquoi comportent t-elles des points d' | ||
+ | |||
+ | Les points d' | ||
+ | |||
+ | __**Chargement d'un objet**__ | ||
+ | |||
+ | //A partir de ses 2 programmes et de leur exécution :// | ||
+ | |||
+ | __Précisez ce que charge exactement Hibernate lors du chargement d'un Objet :__ | ||
+ | |||
+ | Il charge toutes ses propriétés. (Toutes les colonnes de la table) | ||
+ | |||
+ | __Précisez comment sont chargés les instances liées à un objet chargé pour les liens oneToMany et manyToOne :__ | ||
+ | |||
+ | 1 - Pour **manyToOne**, | ||
+ | |||
+ | 2 - Pour **oneToMany**, | ||
+ | |||
+ | __En quoi consiste le chargement paresseux d' | ||
+ | |||
+ | Le chargement paresseux correspond à la réponse 2 de la question précédente. On ne charge pas directement tous les elements de la liste de la catégorie. | ||
+ | |||
+ | __**Chargement de listes d' | ||
+ | |||
+ | //A partir de ce programme :// | ||
+ | |||
+ | __Interprétez la forme de la requête passée à la méthode createQuery, | ||
+ | |||
+ | Il semble que createQuery permette de charger l' | ||
+ | |||
+ | __Renseignez-vous sur HQL dans la documentation__ | ||
+ | |||
+ | La forme "from table" est la forme la plus simple; On peut lui ajouter des paramètre avec des " | ||
+ | |||
+ | //A partir de l' | ||
+ | |||
+ | __Interprétez et expliquez le résultat obtenu : __ | ||
+ | |||
+ | On obtient une erreur de type StackOverFlow. On a en fait une boucle infinie, car, lorsque le programme affiche les categorie avec le toString(), ils affichent leurs produits, les produits affichent leurs catégories qui affichent leurs produits et ainsi de suite. | ||
+ | |||
+ | __**Sélection**__ | ||
+ | |||
+ | //A partir du premier programme :// | ||
+ | |||
+ | __Interprétez les requêtes SQL exécutées par Hibernate : __ | ||
+ | |||
+ | |||
- | {{: |