Quelle est la différence entre les associations unidirectionnelles et bidirectionnelles ?
Puisque les tables générées dans la base de données sont toutes les mêmes, la seule différence que j'ai trouvée est que chaque côté des associations bidirectionnelles aura une référence à l'autre, et les unidirectionnelles non.
Il s'agit d'une association unidirectionnelle
public class User {
private int id;
private String name;
@ManyToOne
@JoinColumn(
name = "groupId")
private Group group;
}
public class Group {
private int id;
private String name;
}
L'association bidirectionnelle
public class User {
private int id;
private String name;
@ManyToOne
@JoinColumn(
name = "groupId")
private Group group;
}
public class Group {
private int id;
private String name;
@OneToMany(mappedBy="group")
private List<User> users;
}
La différence est de savoir si le groupe détient une référence de l'utilisateur.
Je me demande donc si c'est la seule différence ? laquelle est recommandée ?
11 votes
Le groupe saura désormais quels utilisateurs il contient. Je ne pense pas qu'il s'agisse d'une différence minime, loin de là.
7 votes
Les relations bidirectionnelles sont devenues un chaos pour moi lorsqu'il s'agit de mettre à jour :)
0 votes
Cela peut aider : thorben-janssen.com/