回答
考慮所擁有的實體類型也可以由另一個父實體類型擁有的情況。你把擁有的表中的外鍵引用放到兩個父表中嗎?如果你有三種父類型呢?它只是不能擴展到大型設計。
連接表將連接解耦,以便擁有的表不知道父表的含義,從而允許設計優雅地縮放。
看到區別內部SQL操作在連接表和外鍵中調用http://stackoverflow.com/q/18333198/418439 – 2013-08-22 02:20:06
如果子實體只有一個父類型,則不需要連接表。 我用JPA做過這個(帶有hibernate impl。)。
優點: 少一個表。 也許性能更好。 不是「這張桌子是幹什麼的?」輸入問題。
缺點: 從OO的角度來看,引入了child和parent之間的附加依賴關係。在實踐中,這可能不是什麼大不了的事情,因爲這種關係在小孩中是私密的。
e.g. parent: @OneToMany(mappedBy = "parent", cascade = CascadeType.ALL) @MapKey(name = "name") private Map children; child: @ManyToOne(optional = false) private Parent parent;
你能否詳細說明這個劣勢 – 2011-02-01 13:40:01
精益劣勢。 – Conor 2011-02-15 17:04:01
請注意,使用JPA 2.0時,不再需要將子對象引用給父對象。只需在父級上使用@JoinColumn註釋。 – 2014-10-26 19:18:53
- 1. 爲什麼hibernate會爲單向OneToMany創建一個連接表?
- 2. 什麼是單向多對多關聯?
- 3. 如何讓hibernate單向多對多關聯更新?
- 4. 如何在Hibernate中單向多對一地離開連接表?
- 5. Hibernate單向關聯問題
- 6. 無法找出與連接表的一對多雙向關聯
- 7. 單向一個一對多的關係,而不連接表
- 8. 爲什麼我的連接表爲空? (使用Hibernate映射多對多)
- 9. 一個一對多的關係時,關聯表變得更行Hibernate的更新
- 10. JPA使用連接表的JPA一對多單向關係
- 11. Linq單向一對多關聯
- 12. 如何將多個單一對多關聯在Hibernate中
- 13. 什麼是hibernate中的單值關聯?
- 14. 爲什麼建議避免外鍵上的單向一對多關聯?
- 15. 爲什麼在冬眠期間單向多對一關聯是可選的
- 16. Hibernate - 爲什麼要使用多對一來表示一對一?
- 17. Spring Hibernate - 保存一對多關聯
- 18. FluentNHibernate單向多對多關聯
- 19. Hibernate中一對一關聯的行爲?
- 20. sails.js創建爲單向關聯的一對一關聯
- 21. Hibernate映射 - 連接兩個表與關聯表 - 但與一捻
- 22. Hibernate連接映射多對一,多列
- 23. 爲什麼hibernate創建連接表以及連接列?
- 24. 爲什麼LEFT OUTER Join需要一對一雙向關聯
- 25. hibernate中的多對多關係刪除連接表數據?
- 26. DataNucleus中的多對一單向關係
- 27. 雙向或單向多對一doctrine2關聯映射
- 28. Doctrine2一到多,單向與連接表
- 29. 爲什麼數據庫連接池比單個連接好?
- 30. 雙向一對多連接表
看到http://stackoverflow.com/questions/2092611/why-is-it-recommended-to-avoid-unidirectional-one-to-many-association-on-a-forei – 2012-10-23 11:30:47