2014-01-14 206 views
0

我學習Merise或UML時,如果我們有多對多關係的表,我們必須在關係模型(在Mysql中)中創建一個新表,並且此表將包含拖拽其他桌子的id。
但是我們真的必須創建一個新的,因爲有了休眠和映射,我認爲我們不需要。
因爲每個表(實體)都會有另一個表(實體)的列表。
那麼處理多對多關係的正確方法是什麼?創建一個新表還是不?多對多關係和關係模型

回答

1

通常,您需要normalise數據庫中的多對多關係(有些專家可能會在choose not to之間)。然而Spring並不是其中之一,它只是簡化了​​的一部分。

1

您仍然需要一個「連接表」,該連接表將包含兩列與其他兩個表的外鍵。

在hibernate中,當一個實體有一個List時,你仍然需要能夠將這個關係存儲在表上。

因此,舉例來說,如果你想要一個多到多表A和表B之間..

//TableA class:  
@ManyToMany 
@JoinTable(name="TABLEA_TABLEB", 
    joinColumns= 
     @JoinColumn(name="TABLEA_ID", referencedColumnName="ID"), 
    inverseJoinColumns= 
     @JoinColumn(name="TABLEB_ID", referencedColumnName="ID") 
    ) 
public Set<TableB> bees; 

//TableB Class: 
@ManyToMany(mappedBy="bees") 
public Set<TableA> ays; 

這將創建一個連接表有兩列(「tablea_id」,「tableb_id」);這些列將與主實體的「ID」(主鍵)具有外鍵關係。

0

你提到UML:

Association Class的情況下,join table會有「額外」的欄目,除了keys