学说2:管理多对多关联的最佳方式

时间:2013-08-01 13:48:10

标签: orm doctrine-orm many-to-many

Doctrine2 ORM有2种技术方法可以处理多对多关联:

1 /对于2个实体之间的“简单”关系,并且没有附加属性:

  • 使用实体之间的@ManyToMany关联
  • 在这种情况下,直接使用链接表,没有关联实体

2 /当链接表引入额外字段或超过2个实体时:

  • 使用关联类,即“真实”实体来映射链接表
  • 在这种情况下,直接的ManyToMany关联被参与实体之间的 OneToMany / ManyToOne 关联所取代

这两个实现完全不同。

但是,在某些情况下,未来的业务需求可以通过添加额外字段来快速更改简单关联。 在这种情况下,我们必须通过第二个实现和重构受影响的代码替换现有实体中的直接ManyToMany关联。

  • 那么,总是使用关联实体来处理所有问题是一种好方法 ManyToMany协会?
  • 否则,最佳做法是什么 选择好的实现并处理这种域 模型演变?

1 个答案:

答案 0 :(得分:1)

如果您有充分的理由相信在不久的将来您将在ManyToMany联接表中拥有额外的属性,那么建立一个实体是出于预防的好主意。如果没有那么最好使用正常的ManyToMany关系。然后,当需要进行更改时,您可以更新模式以及代码。如果您尝试遵循单一责任原则,那么您可以避免重构大量代码。