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:nicolas [2012/11/29 11:58] – mathissart | slam4:orm:etudiants:nicolas [2019/08/31 14:21] (Version actuelle) – modification externe 127.0.0.1 | ||
|---|---|---|---|
| Ligne 3: | Ligne 3: | ||
| - | |||
| - | * produit -> 1 catégorie | ||
| - | * 1 catégorie -> 0,n produits | ||
| - | * Ligne = détail de la commande | ||
| ==== Création des classes métier ===== | ==== Création des classes métier ===== | ||
| Ligne 16: | Ligne 12: | ||
| Il faut mettre la ligne de code au dessus de la classe : | Il faut mettre la ligne de code au dessus de la classe : | ||
| - | <code java h|Categorie.php> | + | <code java |h Déclaration d'une classe de mapping> |
| @Table(name=" | @Table(name=" | ||
| public class Categorie { | public class Categorie { | ||
| Ligne 26: | Ligne 22: | ||
| </ | </ | ||
| - | == Comment est déclaré le mapping entre un membre de la classe et un champ de la table relationnelle ? == | + | == |
| Afin de déclaré un mapping entre une membre de la classe et un champ de la table relationnelle, | Afin de déclaré un mapping entre une membre de la classe et un champ de la table relationnelle, | ||
| il suffit d' | il suffit d' | ||
| voici la ligne de code qu'il vous faut : \\ | voici la ligne de code qu'il vous faut : \\ | ||
| - | <code java h|Champ> | + | <code java |hChamp> |
| @Column(name=" | @Column(name=" | ||
| private String libelle; // On indique que notre champ sera un String | private String libelle; // On indique que notre champ sera un String | ||
| Ligne 39: | Ligne 35: | ||
| private monType monChamp | private monType monChamp | ||
| + | == 3) Comment est déclarée la clé primaire de la table ? == | ||
| + | Pour déclarer une clé primaire sur Hibernate, il suffit de r' | ||
| + | Par exemple : | ||
| + | <code java |h Champ> | ||
| + | @Id // C'est cette balise qui permet de définir la clé primaire. | ||
| + | @Column(name=" | ||
| + | private int id; | ||
| + | |||
| + | </ | ||
| - | *3/ La clé primaire est déclarée grâce à cette ligne de code : @Id | ||
| - | 4/ Pour déclarer une clé primaire, on a plusieurs | + | == 4) Quelles sont les possibilités de déclaration des clés primaires ? == |
| + | Sur hibernate, il y à plusieurs | ||
| - | @GeneratedValue(strategy=generationType.IDENTITy | + | - Afin d'auto incrémenter à partir de la base donnée une clé primaire, il suffit d' |
| + | <code java |h Auto> | ||
| + | @GeneratedValue(strategy=generationType.AUTO) | ||
| + | </ | ||
| + | - | ||
| + | <code java |h Identity> | ||
| + | @GeneratedValue(strategy=GenerationType.IDENTITY) | ||
| + | </ | ||
| - | 5/ | + | - Afin d'auto incrémenter à partir de Hibernate une clé primaire, il suffit d' |
| + | <code java |h Sequence> | ||
| + | @GeneratedValue(strategy=GenerationType.SEQUENCE) | ||
| + | </code> | ||
| + | - | ||
| + | <code java |h Table> | ||
| + | @GeneratedValue(strategy=GenerationType.TABLE) | ||
| + | </ | ||
| + | == 5) tableau montrant la correspondance de type (entier, chaine, etc.) entre les propriétés d’une classe et les champs d’une table == | ||
| + | Voici un tableau recapitulant, | ||
| ^Type Java^Type Sql^ | ^Type Java^Type Sql^ | ||
| |String|Varchar| | |String|Varchar| | ||
| Ligne 52: | Ligne 73: | ||
| |float|Float| | |float|Float| | ||
| - | 6/ | + | == 6) lien bidirectionnel entre deux classes == |
| + | {{: | ||
| + | == 7) À quoi correspond la méthode persist() ? == | ||
| + | La méthode persist sur Hibernate permet d' | ||
| + | <code java |h Méthode Persist> | ||
| + | Categorie aCategorie=new Categorie(" | ||
| + | session.persist(aCategorie); | ||
| - | | + | </ |
| + | |||
| + | == 8) À quoi correspond la méthode commit() ? == | ||
| + | La méthode commit permet de mettre à jour la base de donnée avec les objets persistants. | ||
| + | Autrement dit, la méthode commit permet d’insérer dans la base de donnée les objets qui sont valide. | ||
| + | |||
| + | Code de la méthode commit : | ||
| + | <code java |h Méthode Commit> | ||
| + | Transaction trans = session.beginTransaction(); | ||
| + | |||
| + | |||
| + | trans.commit(); | ||
| + | |||
| + | </ | ||
| + | |||
| + | == 8) Comment ont été traduits les liens objet entre le membre categorie et produits entre ces classes dans les tables de la base ? == | ||
| + | |||
| + | Lors de l' | ||
| + | <code java |h Produit> | ||
| + | Produit aProduit=new Produit(" | ||
| + | </ | ||
| + | Lors de l' | ||
| + | |||
| + | == 9) Quelles requêtes SQL ont été créées par Hibernate pour réaliser la persistance ? == | ||
| + | |||
| + | Afin de réaliser la persistance, | ||
| + | |||
| + | Ajout de la catégorie : | ||
| + | <code sql |h INSERT Catégorie> | ||
| + | insert | ||
| + | into | ||
| + | Categorie | ||
| + | (libelle) | ||
| + | values | ||
| + | (?) | ||
| + | </ | ||
| + | Ajout du produit : | ||
| + | <code sql |h INSERT Produit> | ||
| + | insert | ||
| + | into | ||
| + | Produit | ||
| + | (idCategorie, | ||
| + | values | ||
| + | (?, ?, ?, ?) | ||
| + | |||
| + | </ | ||
| + | |||
| + | == 10) Pourquoi comportent t-elles des points d' | ||
| + | Les requêtes comportent des points d’interrogation car hibernate a mit en place des requêtes paramétrables.\\ | ||
| + | | ||
| + | Les paramètres sont dont affichés avec des "?" | ||
| + | |||
| + | |||
| + | == 11) Qu'est ce que charge exactement Hibernate lors du chargement d'un Objet ? == | ||
| + | |||
| + | Lors d'un chargement d' | ||
| + | Par exemple si l'on charge un produit, on charge aussi sa catégorie : \\ | ||
| + | {{: | ||
| + | On peut voir que la catégorie est bien chargé | ||
| + | |||
| + | |||
| + | |||
| + | == 12) Comment sont chargés les instances liées à un objet chargé pour les liens oneToMany et manyToOne ? == | ||
| + | |||
| + | Pour charger les instances liées à un objet chargé pour les liens oneToMany, Hibernate charge l' | ||
| + | Par exemple, lorsque l'on charge un produit, il charge aussi sa catégorie : | ||
| + | <code sql |h jj> | ||
| + | select | ||
| + | produit0_.id as id1_1_, | ||
| + | produit0_.idCategorie as idCatego4_1_1_, | ||
| + | produit0_.nom as nom1_1_, | ||
| + | produit0_.prix as prix1_1_, | ||
| + | categorie1_.id as id0_0_, | ||
| + | categorie1_.libelle as libelle0_0_ | ||
| + | from | ||
| + | Produit produit0_ | ||
| + | left outer join | ||
| + | Categorie categorie1_ | ||
| + | on produit0_.idCategorie=categorie1_.id | ||
| + | where | ||
| + | produit0_.id=? | ||
| + | </ | ||
| + | |||
| + | |||
| + | Pour charger les instances liées à un objet chargé pour les liens ManyToOne, | ||
| + | Hibernate: | ||
| + | select | ||
| + | categorie0_.id as id0_0_, | ||
| + | categorie0_.libelle as libelle0_0_ | ||
| + | from | ||
| + | Categorie categorie0_ | ||
| + | where | ||
| + | categorie0_.id=? | ||
| + | Hibernate: | ||
| + | select | ||
| + | produits0_.idCategorie as idCatego4_1_, | ||
| + | produits0_.id as id1_, | ||
| + | produits0_.id as id1_0_, | ||
| + | produits0_.idCategorie as idCatego4_1_0_, | ||
| + | produits0_.nom as nom1_0_, | ||
| + | produits0_.prix as prix1_0_ | ||
| + | from | ||
| + | Produit produits0_ | ||
| + | where | ||
| + | produits0_.idCategorie=? | ||
| + | |||
| + | </ | ||
| + | |||
| + | === En quoi consiste le chargement paresseux d' | ||
| + | Le chargement paresseux consiste donc à charger objet par objet.\\ | ||
| + | Par exemple, avec l' | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | | ||