JPA Flashcards
Quels sont les 4 types de relation entre entités ?
- @OneToOne
- @OneToMany
- @ManyToOne
- @ManyToMany
Quel type de relation utilisera nécessairement une table de jointure ?
@ManyToMany
Qu’est-ce-qu’une entité ?
Une classe Java dont les instances sont persistées en base. Elle est annotée par @Entity.
Quelles est la règle générale pour ce qui est de la persistence des champs ?
Chaque champ d’une entité est automatiquement associé à une colonne de même nom, pourvu qu’il soit de type:
- primitif ou wrapper
- String
- énuméré
- Serializable
Comment gérer correctement les champs de type date ?
- S’il d’agit d’un champ Date ou Calendar, il faut l’annoter avec @Temporal en spécifiant si l’on veut une DATE, TIME ou TIMESTAMP
- S’il s’agit d’un champ LocalDate, LocalTime ou LocalDateTime, il n’y a rien besoin de spécifier car la correspondance est directe.
Comment sont gérés les champs énumérés ?
Par défaut le champ sera persisté sous forme numérique (ORDINAL). Si l’on souhaite persister une chaine de caractères, il faut le préciser en utilisant @Enumerated(STRIING)
Comment sont persistés les champs de type Serializable ?
Dans un blob SQL
Comment forcer le stockage d’un champ dans un blob ?
Au moyen de @Lob
Quelle est la classe centrale de l’API JPA ?
La classe EntityManager. Elle gère un contexte de persistence qui contient toutes les entités gérées.
Quelles sont les 5 opérations possibles sur une entité ?
- PERSIST: ajout au contexte de persistence. Elle sera écrite en base quand la transaction sera validée.
- REMOVE: suppression du contexte de persistence: Elle sera effacée de la base quand la transaction sera validée.
- REFRESH: rafraichissement d’une entité persistente avec les informations de la base.
- DETACH: détachement du contexte de persistence. Les modifications apportées à l’entité ne seront pas persistées.
- MERGE: réattachement au contexte de persistence.
Quel est le lien entre les opérations sur les entités et les transactions ?
La synchronisation entre le contexte de persistence et la base a lieu quand la transaction est validée.
Quelle est la différence entre entité maitre et entité esclave ?
Le côté maitre de la relation contient la clé étrangère vers le côté esclave.
Comment définir une relation bidirectionnelle ?
En utilisant l’attribut mappedBy. Attention si on oublie de l’utiliser, on risque de créer deux relations unidirectionnelles.
Définir la notion de cascade
Cela permet de spécifier ce qui se passe sur les entités filles quand l’entité mère subit une opération.
Comment fonctionne la suppression d’orphelins ?
En utilisant l’attribut orphanRemoval, JPA va détecter les entités filles qui ne sont plus référencées par leur mère, et les supprimer de la base.