如何在JPA实体中设计多对多关系?

时间:2012-11-28 07:30:06

标签: jpa

我试图了解设计具有多对多关系的2个实体的更好方法是什么?在数据库中,这两个实体之间将存在连接表。但是在创建实体时我是否必须遵循相同的方法?

例如:用户到用户组

用户可能属于多个组,一个组可能包含许多用户。

在关系数据库中,我将有3个表,如User,User2Group,Group

因此,当我创建JPA实体时,我应该通过提供正确的注释(@ManytoMany)为3个表或仅2个实体提供3个实体。

由于我是JPA的新手,我试图从以下观点来理解好的和坏的一面:

  1. 性能
  2. 代码维护
  3. 谢谢,您的投入将不胜感激。

1 个答案:

答案 0 :(得分:5)

不,您不需要将连接表映射为实体。只需使用ManyToMany注释:

public class User {
    ...
    @ManyToMany
    private Set<Group> groups;
}

public class Group {
    ...
    @ManyToMany(mappedBy = "groups")
    private Set<User> users;
}

如果连接表不是纯连接表,则只需要将连接表映射为实体,即如果它具有其他信息,例如用户在组中输入的日期。

映射对性能的影响很小。重要的是如何使用和查询实体,以及如何设计数据库(索引等)