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

Che*_*tan 2 jpa

我想知道什么是更好的方式来设计2个实体其中有许多一对多的关系?在数据库中,这两个实体之间将存在连接表.但是在创建实体时我是否必须遵循相同的方法?

例如:用户到用户组

用户可以属于许多组,并且组可以包含许多用户.

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

所以,当我创建我的JPA实体,应该我有3台3个实体,或只是2通过提供恰当的注解(@ManyToMany)实体.

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

  1. 性能
  2. 代码维护

谢谢,您的投入将不胜感激.

JB *_*zet 5

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

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

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

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

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