Annotations JPA et mappedBy - Java - Programmation
MarshPosté le 12-07-2015 à 14:11:11
Bonjour,
Je réalise une application en JAVA et j'utilise JPA pour l'interaction avec la base de donnée, je me dirige vers vous pour deux questions importantes :
1- Je veux faire un lien bidirectionnel entre deux classes puisque j'ai besoin d’accéder aux données des deux cotés. Prenons le cas de deux classes A et B avec A *-1 B (comme schéma UML, A a un unique B et B a plusieurs A..).
dans A : @ManyToOne private B attribut
dans B @OneToMany private List<A> list
Est ce que cela suffit pour réaliser le lien bidirectionnel? ou il faut obligatoirement utiliser le mappedBy?
2- Ce qui nous mène à ma deuxième question, si le mappedBy est mis du mauvais coté, ça va juste impacter la performance ou encore plus grave (données non persistés) ? Par exemple dans le cas de la cardinalité 1-*, on a pas le choix, le mappedBy doit être du coté OneToMany donc dans ce cas : dans B @OneToMany (mappedBy="attribut" ) private List<A> list
Sachant que, je ne vais pas créer la classe B, et y créer une List<A> et lui affecter des objets, mais au contraire, je ne vais rien faire du coté de B. Je vais juste créer à plusieurs reprises des classes A et à chaque fois je lui affecte un objet de B, donc j'aurais éventuellement plusieurs classes A qui ont l'objet B affecté. et je veux que la liste de l'objet B contiennent automatiquement ces objets là.
Je m'excuse d'avance si ma question manque de clarté et je vous remercie d'avance Bonne journée
Marsh Posté le 12-07-2015 à 14:11:11
Bonjour,
Je réalise une application en JAVA et j'utilise JPA pour l'interaction avec la base de donnée, je me dirige vers vous pour deux questions importantes :
1- Je veux faire un lien bidirectionnel entre deux classes puisque j'ai besoin d’accéder aux données des deux cotés. Prenons le cas de deux classes A et B avec A *-1 B (comme schéma UML, A a un unique B et B a plusieurs A..).
dans A :
@ManyToOne
private B attribut
dans B
@OneToMany
private List<A> list
Est ce que cela suffit pour réaliser le lien bidirectionnel? ou il faut obligatoirement utiliser le mappedBy?
2- Ce qui nous mène à ma deuxième question, si le mappedBy est mis du mauvais coté, ça va juste impacter la performance ou encore plus grave (données non persistés) ? Par exemple dans le cas de la cardinalité 1-*, on a pas le choix, le mappedBy doit être du coté OneToMany donc dans ce cas :
dans B
@OneToMany (mappedBy="attribut" )
private List<A> list
Sachant que, je ne vais pas créer la classe B, et y créer une List<A> et lui affecter des objets, mais au contraire, je ne vais rien faire du coté de B. Je vais juste créer à plusieurs reprises des classes A et à chaque fois je lui affecte un objet de B, donc j'aurais éventuellement plusieurs classes A qui ont l'objet B affecté. et je veux que la liste de l'objet B contiennent automatiquement ces objets là.
Je m'excuse d'avance si ma question manque de clarté et je vous remercie d'avance
Bonne journée