首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate最佳实践:避免多到多和“异国情调”的关系

Hibernate最佳实践:避免多到多和“异国情调”的关系
EN

Stack Overflow用户
提问于 2013-09-03 13:58:00
回答 2查看 5K关注 0票数 9

hibernate最佳实践指出,许多到多个关联是罕见的,应该避免。

不要使用外来关联映射: 实际的多到多关联的实际测试用例很少。大多数情况下,您需要存储在“链接表”中的其他信息。在这种情况下,最好将两个一对多的关联用于中间链接类。事实上,大多数协会是一对多和多对一。因此,在使用任何其他关联样式时,您应该谨慎行事。

一个基本和常见的情况是:用户可以在多个团队中,一个团队可以有多个成员。

除了为join表创建实体之外,还有其他替代方法使用@ManyToMany吗?对于团队/成员来说,联接表中没有额外的数据,因此拥有Team>TeamMembership>User并不那么实用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-03 14:03:14

使用@ManyToMany本质上没有什么问题,但在实践中,很少有机会使用它。通常,在链接本身上需要额外的属性,此时,关系就变成了自己的实体。

我的经验中的一个例子就是你描述的那种人/团队关系。一开始我使用@ManyToMany,但一旦需要在关系中添加有效日期(在特定时间点属于团队),就必须将其转换为@OneToMany

票数 10
EN

Stack Overflow用户

发布于 2014-01-24 05:30:26

@ManyToMany的一个问题是模型的变化。如果您需要向关联中添加一个字段,那么您有几个选择。您可以重构模型,以便关联成为一个实体(read )。或者,您可以让关联变得更加奇异,例如@MapKeyJoinColumn。在任何一种情况下,首先都可以通过设计模型来节省未来的重构工作。

此外,使用这些奇异的多到多映射中的一种,会使模型更接近于测试覆盖率较低、实际使用情况较低的情况。这反过来又增加了遇到不受支持或支持不足的特性的风险,以及未解决和未发现的bug。

最后,仅仅因为hibernate为您提供了一种方法,并不意味着您应该使用它。在我的经验中,我看到了太多的案例,开发人员在hibernate中使用某种特性的方式--它不是故意的--导致了其他的设计含义,以及导致比其价值更大的麻烦和麻烦的限制。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18594234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档