Le mapping objet-relationnel (ORM)
Ce qu'un ORM fait correspondre : classe et table, attribut et colonne, association et clé étrangère, stratégies d'héritage ; chargement paresseux ou immédiat et problème des N+1 requêtes.
- 29 cartes
- 6 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
- Les chiffres
- Mises en situation
- Comprendre
Quelques cartes du deck
Mapping objet-relationnel (ORM) : de quoi s'agit-il ?
Voir la réponse
Technique et outil qui font correspondre les classes et objets d'un programme aux tables et lignes d'une base relationnelle, et génèrent le SQL à la place du programmeur.
Hibernate (qui implémente la spécification JPA), SQLAlchemy ou l'ORM de Django en sont des exemples. Le SQL existe toujours : l'ORM l'écrit, et il faut savoir lequel il écrit.
Quelle annotation JPA, posée sur l'attribut
auteur, place la clé étrangèreauteur_iddans la tablelivre?
```java
@Entity
class Livre {
@Id Long id;
String titre;
Auteur auteur;
}`@ManyToOne@OneToMany@ManyToMany@Column(name = "auteur_id")
Voir la réponse
@ManyToOnePlusieurs livres pour un auteur : c'est le côté « plusieurs » qui porte la clé étrangère, avec
@ManyToOne, et son nom par défaut estauteur_id(@JoinColumnsert à en choisir un autre).@ManyToManycréerait une table d'association, et@Columndécrit une colonne simple, pas une association.Dans un ORM, une classe correspond à une …, un attribut à une … et un objet à une ….
Voir la réponse
Dans un ORM, une classe correspond à une table, un attribut à une colonne et un objet à une ligne.
C'est la correspondance de base. Le reste (associations, héritage) en découle.
Entité : de quoi s'agit-il ?
Voir la réponse
Classe dont les instances correspondent à des lignes d'une table, chacune identifiée par une clé primaire que l'ORM suit.
En JPA, on la marque avec
@Entityet son identifiant avec@Id. Une classe sans cette marque n'est pas enregistrée en base.