2012-11-28 64 views
2

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

例如:用户至用户组

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

在关系数据库中,我将有3个表像用户,User2Group,集团

所以,当我创造我的JPA实体,我应该有3台3个实体或仅有2实体通过提供恰当的注解(@多对多)。

由于我是新来的JPA,我想但从以下角度理解好的和坏的一面:

  1. 性能
  2. 代码维护

谢谢,你的输入会不胜感激。

回答

5

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

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

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

你只需要映射连接表作为一个实体,如果它不是一个纯粹的连接表,也就是说,如果它有更多信息,例如,例如,日期,当用户进入小组。

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

+0

谢谢,我现在应该继续前进.. – Chetan