我试图了解设计具有多对多关系的2个实体的更好方法是什么?在数据库中,这两个实体之间将存在连接表。但是在创建实体时我是否必须遵循相同的方法?
例如:用户到用户组
用户可能属于多个组,一个组可能包含许多用户。
在关系数据库中,我将有3个表,如User,User2Group,Group
因此,当我创建JPA实体时,我应该通过提供正确的注释(@ManytoMany)为3个表或仅2个实体提供3个实体。
由于我是JPA的新手,我试图从以下观点来理解好的和坏的一面:
谢谢,您的投入将不胜感激。
答案 0 :(得分:5)
不,您不需要将连接表映射为实体。只需使用ManyToMany注释:
public class User {
...
@ManyToMany
private Set<Group> groups;
}
public class Group {
...
@ManyToMany(mappedBy = "groups")
private Set<User> users;
}
如果连接表不是纯连接表,则只需要将连接表映射为实体,即如果它具有其他信息,例如用户在组中输入的日期。
映射对性能的影响很小。重要的是如何使用和查询实体,以及如何设计数据库(索引等)