回答
考虑所拥有的实体类型也可以由另一个父实体类型拥有的情况。你把拥有的表中的外键引用放到两个父表中吗?如果你有三种父类型呢?它只是不能扩展到大型设计。
连接表将连接解耦,以便拥有的表不知道父表的含义,从而允许设计优雅地缩放。
看到区别内部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