2012-10-17 48 views
0

我正在經歷的休眠文件和我得到了以下爲什麼Hibernate的一些關聯是非常不同尋常什麼背後的異樣

UNI =原因單向碧=雙向

     OneToOne  OneToMany   ManyToOne  ManyToMany 
Uni     ok    UNUSUAL  MOST COMMON  
Uni with Join Tbl UNUSUAL      Common whn optional 
Bi     COMMON  <------ Most Common ------------> 
Bi with Join Tbl Possible bt Unusual 

所以,如果我們有人和電話表,我只想讓人知道它的所有電話不是電話相同(他的主人),爲什麼它是不尋常的?

或者爲什麼一些映射在其類別更喜歡(在統一一樣,統一與連接表,鉍,鉍與連接表)

回答

0

這裏的關鍵是要確保您的映射是同步與您的架構越多越好。

您將Person和PhoneNumber關聯的示例作爲單向OneToMany映射。不建議這樣做,因爲PhoneNumber表不可避免地具有Person表的外鍵。因此PhoneNumber非常瞭解它的主人。但是,如果您使用單向映射,則假裝PhoneNumber不知道哪個人擁有它。正如Hibernate註釋文檔中所述,沒有什麼可以阻止你這樣做。

此方法的缺點是,當您添加PhoneNumber和Person時,Hibernate必須插入兩個記錄,然後更新PhoneNumber以設置外鍵。三個陳述。但是,如果您使用雙向鏈接,Hibernate可以使用已設置的外鍵插入PhoneNumber。只需要兩條語句。