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/12/04 14:24] – 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 30: | Ligne 26: | ||
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 42: | Ligne 38: | ||
Pour déclarer une clé primaire sur Hibernate, il suffit de r' | Pour déclarer une clé primaire sur Hibernate, il suffit de r' | ||
Par exemple : | Par exemple : | ||
- | <code java h|Champ> | + | <code java |h Champ> |
@Id // C'est cette balise qui permet de définir la clé primaire. | @Id // C'est cette balise qui permet de définir la clé primaire. | ||
@Column(name=" | @Column(name=" | ||
Ligne 53: | Ligne 49: | ||
Sur hibernate, il y à plusieurs méthodes pour déclarer les clés primaires. | Sur hibernate, il y à plusieurs méthodes pour déclarer les clés primaires. | ||
- | - Afin d' | + | - Afin d' |
- | <code java h|> | + | <code java |h Auto> |
@GeneratedValue(strategy=generationType.AUTO) | @GeneratedValue(strategy=generationType.AUTO) | ||
</ | </ | ||
- | - | ||
- | <code java h|> | + | <code java |h Identity> |
@GeneratedValue(strategy=GenerationType.IDENTITY) | @GeneratedValue(strategy=GenerationType.IDENTITY) | ||
</ | </ | ||
- | - | + | |
- | <code java h|> | + | - Afin d'auto incrémenter à partir de Hibernate une clé primaire, il suffit d' |
+ | <code java |h Sequence> | ||
@GeneratedValue(strategy=GenerationType.SEQUENCE) | @GeneratedValue(strategy=GenerationType.SEQUENCE) | ||
</ | </ | ||
- | - | ||
- | <code java h|> | + | <code java |h Table> |
@GeneratedValue(strategy=GenerationType.TABLE) | @GeneratedValue(strategy=GenerationType.TABLE) | ||
</ | </ | ||
- | 5/ | + | == 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 75: | 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' | ||