hibernate最佳实践指出,许多到多个关联是罕见的,应该避免。
不要使用外来关联映射: 实际的多到多关联的实际测试用例很少。大多数情况下,您需要存储在“链接表”中的其他信息。在这种情况下,最好将两个一对多的关联用于中间链接类。事实上,大多数协会是一对多和多对一。因此,在使用任何其他关联样式时,您应该谨慎行事。
一个基本和常见的情况是:用户可以在多个团队中,一个团队可以有多个成员。
除了为join表创建实体之外,还有其他替代方法使用@ManyToMany吗?对于团队/成员来说,联接表中没有额外的数据,因此拥有Team>TeamMembership>User并不那么实用。
发布于 2013-09-03 14:03:14
使用@ManyToMany本质上没有什么问题,但在实践中,很少有机会使用它。通常,在链接本身上需要额外的属性,此时,关系就变成了自己的实体。
我的经验中的一个例子就是你描述的那种人/团队关系。一开始我使用@ManyToMany,但一旦需要在关系中添加有效日期(在特定时间点属于团队),就必须将其转换为@OneToMany。
发布于 2014-01-24 05:30:26
@ManyToMany的一个问题是模型的变化。如果您需要向关联中添加一个字段,那么您有几个选择。您可以重构模型,以便关联成为一个实体(read )。或者,您可以让关联变得更加奇异,例如@MapKeyJoinColumn。在任何一种情况下,首先都可以通过设计模型来节省未来的重构工作。
此外,使用这些奇异的多到多映射中的一种,会使模型更接近于测试覆盖率较低、实际使用情况较低的情况。这反过来又增加了遇到不受支持或支持不足的特性的风险,以及未解决和未发现的bug。
最后,仅仅因为hibernate为您提供了一种方法,并不意味着您应该使用它。在我的经验中,我看到了太多的案例,开发人员在hibernate中使用某种特性的方式--它不是故意的--导致了其他的设计含义,以及导致比其价值更大的麻烦和麻烦的限制。
https://stackoverflow.com/questions/18594234
复制相似问题