2012-11-28 58 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