1
132
一对多 :一个人有许多技能,一项技能在两个人之间不能重复使用。
多对多 :一个人有许多技能,一项技能在两个人之间重复使用
在一对多关系中,一个对象是“父对象”,一个对象是“子对象”。父级控制子级的存在。在“多对多”中,任何一种类型的存在都依赖于它们两个类型之外的某个类型(在更大的应用程序上下文中)。 你的主题(领域)应该决定关系是一对多还是多对多——然而,我发现使关系单向或双向是一个工程决策,它权衡了内存、处理、性能等。 令人困惑的是,一个多对多的双向关系不需要是对称的!也就是说,一群人可以指向一种技能,但这种技能不需要仅仅与那些人相关。通常是这样,但这种对称性不是一个要求。以爱为例,它是双向的(“我爱”,“爱我”),但往往是不对称的(“我爱她,但她不爱我”)! 所有这些都得到了Hibernate和JPA的良好支持。请记住,Hibernate或任何其他ORM在管理双向多对多关系时都不会对维护对称性大呼小叫……这完全取决于应用程序。 |
2
177
看起来每个人都在回答
两者之间的区别
|
3
31
1)圆圈是实体/pojos/bean 2)deg是度的缩写,如图(边数)中所示。 pk=主键,fk=外键 注意度数和边名之间的矛盾。许多对应于degree=1,而一个对应于degree>1。
在图中(边数)
pk=主键,fk=外键 注意度数和边名之间的矛盾。许多对应于degree=1,而一个对应于degree>1。
|
4
6
请看这篇文章: Mapping Object Relationships
|
5
1
这可能需要一个多对多关系船,如下所示
您可能需要定义一个jointable+joincolumn,但是它也可以在没有… |
6
0
首先,阅读所有的印刷品。注意,nHibernate(因此,我假设也是Hibernate)关系映射与db和对象图映射有一个有趣的对应关系。例如,一对一关系通常实现为多对一关系。 其次,在我们告诉您应该如何编写O/R映射之前,我们还必须查看您的DB。尤其是,一项技能能被多人拥有吗?如果是这样的话,你有一种多对多的关系;否则,就是多对一的关系。 第三,我不希望直接实现多对多的关系,而是在域模型中建模“join table”——即,将其视为一个实体,如下所示:
那你看到你有什么了吗?你有两个一对多的关系。(在这种情况下,个人可能拥有一系列的个人技能,但不会拥有一系列的技能。)然而,有些人更喜欢使用多对多的关系(人与技能之间);这是有争议的。 第四,如果你确实有双向关系(例如,人不仅有一系列的技能,而且技能也有一系列的人),那么nhibernate会有。 不 在BL中为您强制执行双向性;它只理解关系的双向性,以实现持久性目的。 第五,在NHibernate(我假设是Hibernate)中,多对一要比一对多(集合映射)更容易正确使用。 祝你好运! |
Montaser Majid · 用于从多行中提取单行的SQL查询 2 年前 |
Chance · 根据Sequelize中的字段拉入特定记录/行 2 年前 |
lambchop01 · GORM如何为相似实体之间的关系建模 2 年前 |
Shale · 如何将此查询更改为ORM? 2 年前 |
Daniel Morales · 替换mongo DB中的嵌入字段 2 年前 |
Vinay P · NodeJS和ORM? 6 年前 |
MadDoctor5813 · 在Django模型中创建“简单”字典? 6 年前 |