SPRING DATA JPA – Fonctions avancées
Affectation
UP ASI
Bureau E204
© 2024-2025 – ESPRIT – Module Architecture des SI II Spring – Spring Data JPA – fonctions avancées Affectations 1
Plan du Cours
– Règles de base
– Exemples pratiques
• One To One
• One To Many / Many To One
• Many To Many
© 2024-2025 – ESPRIT – Module Architecture des SI II Spring – Spring Data JPA – fonctions avancées Affectations 2
Règles de base
• Pour réaliser les affectations d’une entité à une autre, il faut adopter une certaine
démarche :
- S’il s’agit d’une relation bidirectionnelle, il faut distinguer le parent du child
- Si la relation est unidirectionnelle, l’affectation se fera du coté de l’entité qui
a accès aux attributs de l’autre (Le sens du flèche)
- Les opérations d’affectation (setter) se réalise exclusivement sur l’entité
parent.
- Si vous faites l’affectation sur le child (fils), vous n’aurez pas d’erreur coté
code mais aucune modification ne se réalisera coté base de données
• L’affectation est différente selon le type d’association (OneToOne, ManyToOne,
OneToMany, ManyToMany) comme illustré dans les diapos suivants
© 2024-2025 – ESPRIT – Module Architecture des SI II Spring – Spring Data JPA – fonctions avancées Affectations 3
One To One
Dans cet exemple, nous souhaitons ajouter l’équipe, son détail et affecter ce
DetailEquipe à l’Equipe associée en utilisant les cascades
Il suffira donc par la suite de sauvegarder un objet Equipe et ses différents
attributs primitifs (nomEquipe,niveau) et objet (DetailEquipe)
© 2024-2025 – ESPRIT – Module Architecture des SI II Spring – Spring Data JPA – fonctions avancées Affectations 4
One To One
Parent Child
© 2024-2025 – ESPRIT – Module Architecture des SI II Spring – Spring Data JPA – fonctions avancées Affectations 5
One To One
Ajout Equipe et Affectation à DetailEquipe
© 2024-2025 – ESPRIT – Module Architecture des SI II Spring – Spring Data JPA – fonctions avancées Affectations 6
One To One
Ajout Equipe et Affectation à DetailEquipe
En utilisant la cascade entre Equipe et DetailEquipe, l’objet Equipe envoyé doit
contenir le détail équipe associé. A l’exécution, nous aurons une ligne dans la
table equipe, une ligne dans la table detailEquipe et la clé étrangère du
detailEquipe dans l’équipe mise à jour.
© 2024-2025 – ESPRIT – Module Architecture des SI II Spring – Spring Data JPA – fonctions avancées Affectations 7
One To One
Ajout Equipe et Affectation à DetailEquipe
Avant l’exécution de la méthode, les tables équipe et DetailEquipe sont vides
Ces lignes seront présentes dans la base de données après l’exécution
© 2024-2025 – ESPRIT – Module Architecture des SI II Spring – Spring Data JPA – fonctions avancées Affectations 8
One To One
Affectation DetailEquipe à Equipe
Dans cet exemple, nous souhaitons enregistrer le DetailEquipe et l’affecter à
l’Equipe associée déjà existante dans la base.
Equipe est le parent donc l’affectation se fera sur l’objet Equipe
Parent Child
© 2024-2025 – ESPRIT – Module Architecture des SI II Spring – Spring Data JPA – fonctions avancées Affectations 9
One To One
Affectation DetailEquipe à Equipe
© 2024-2025 – ESPRIT – Module Architecture des SI II Spring – Spring Data JPA – fonctions avancées Affectations 10
One To One
Affectation DetailEquipe à Equipe
© 2024-2025 – ESPRIT – Module Architecture des SI II Spring – Spring Data JPA – fonctions avancées Affectations 11
One To One
Affectation DetailEquipe à Equipe
© 2024-2025 – ESPRIT – Module Architecture des SI II Spring – Spring Data JPA – fonctions avancées Affectations 12
One To One
Affectation DetailEquipe à Equipe
© 2024-2025 – ESPRIT – Module Architecture des SI II Spring – Spring Data JPA – fonctions avancées Affectations 13
One To One
Affectation DetailEquipe à Equipe
Cette ligne est déjà présente dans la base de données
Ces lignes seront présentes dans la base de données après l’exécution
© 2024-2025 – ESPRIT – Module Architecture des SI II Spring – Spring Data JPA – fonctions avancées Affectations 14
One To Many
Dans cet exemple, nous souhaitons ajouter un étudiant avec les contrats associés
Il suffira donc par la suite de sauvegarder un objet Etudiant contenant une liste de
contrats et affecter les étudiants (child) aux contrats (Parent).
Parent Child
© 2024-2025 – ESPRIT – Module Architecture des SI II Spring – Spring Data JPA – fonctions avancées Affectations 15
One To Many
Ajout Etudiant avec les contrats associés
© 2024-2025 – ESPRIT – Module Architecture des SI II Spring – Spring Data JPA – fonctions avancées Affectations 16
One To Many
Ajout Etudiant avec les contrats associés
© 2024-2025 – ESPRIT – Module Architecture des SI II Spring – Spring Data JPA – fonctions avancées Affectations 17
One To Many
Ajout Etudiant avec les contrats associés
© 2024-2025 – ESPRIT – Module Architecture des SI II Spring – Spring Data JPA – fonctions avancées Affectations 18
One To Many
Ajout Etudiant avec les contrats associés
© 2024-2025 – ESPRIT – Module Architecture des SI II Spring – Spring Data JPA – fonctions avancées Affectations 19
One To Many
Ajout Etudiant avec les contrats associés
Avant l’exécution, la base de données est vide
Après l’exécution, nous avons une ligne Etudiant dans la table Etudiant , deux
lignes contrats et le champs etudiantId mis à jour avec l’id de l ’étudiant ajouté
© 2024-2025 – ESPRIT – Module Architecture des SI II Spring – Spring Data JPA – fonctions avancées Affectations 20
One To Many
Dans cet exemple, nous souhaitons affecter un departement à l’Etudiant associé
déjà présent dans la base de données
La cardinalité la plus forte est du coté de l’étudiant donc l’étudiant est le parent
L’affectation se fera sur l’objet Etudiant
Child Parent
© 2024-2025 – ESPRIT – Module Architecture des SI II Spring – Spring Data JPA – fonctions avancées Affectations 21
One To Many
Child Parent
© 2024-2025 – ESPRIT – Module Architecture des SI II Spring – Spring Data JPA – fonctions avancées Affectations 22
One To Many
Affectation Département à Etudiant
© 2024-2025 – ESPRIT – Module Architecture des SI II Spring – Spring Data JPA – fonctions avancées Affectations 23
One To Many
Affectation Département à Etudiant
© 2024-2025 – ESPRIT – Module Architecture des SI II Spring – Spring Data JPA – fonctions avancées Affectations 24
One To Many
Affectation Département à Etudiant
Ces lignes sont déjà présentes dans la base de données
La ligne étudiant sera modifiée après l’exécution avec le département
affecté à l’étudiant concerné
© 2024-2025 – ESPRIT – Module Architecture des SI II Spring – Spring Data JPA – fonctions avancées Affectations 25
Many To Many
Dans cet exemple, nous souhaitons affecter une équipe à un Etudiant
L’étudiant et l’équipe sont déjà sauvegardés dans la base de données
La cardinalité est la même des deux cotés de la relation donc c’est à nous de
choisir le parent selon le besoin métier (ca sera Etudiant le parent dans ce cas)
L’affectation se fera sur l’objet Etudiant
Child Parent
© 2024-2025 – ESPRIT – Module Architecture des SI II Spring – Spring Data JPA – fonctions avancées Affectations 26
Many To Many
Affectation Equipe à Etudiant
Parent
Child
© 2024-2025 – ESPRIT – Module Architecture des SI II Spring – Spring Data JPA – fonctions avancées Affectations 27
Many To Many
Affectation Equipe à Etudiant
© 2024-2025 – ESPRIT – Module Architecture des SI II Spring – Spring Data JPA – fonctions avancées Affectations 28
Many To Many
Affectation Equipe à Etudiant
© 2024-2025 – ESPRIT – Module Architecture des SI II Spring – Spring Data JPA – fonctions avancées Affectations 29
Many To Many
Ces lignes sont déjà présentes dans la base de données
Cette ligne sera présente dans la base de données après l’exécution
avec l’équipe affecté à l’étudiant concerné dans la table d’association
etudiant_equipes
© 2024-2025 – ESPRIT – Module Architecture des SI II Spring – Spring Data JPA – fonctions avancées Affectations 30
SPRING DATA JPA – Fonctions avancées
Affectation
Si vous avez des questions, n’hésitez pas à nous
contacter :
Département Informatique
UP Architectures des Systèmes d'Information
Bureau E204
© 2024-2025 – ESPRIT – Module Architecture des SI II Spring – Spring Data JPA – fonctions avancées Affectations 31