【发布时间】:2017-01-18 01:24:19
【问题描述】:
我有两个实体:Rule 和 Violation,1:M。
有两种可能的方式来设计 ORM 中的这种关系:
- 1:M 双向,当我们在
violations表中有rule_id外键时 - 1:m Unidirectional 与 Join Table,当我们有 3 个表时:
rules、violations和rule_violation。
从我读到的 DDD 理论来看,规则是一个聚合根,我们只能通过它的聚合根 - 规则实体访问 Violation。
问题是上面两个应该使用什么关系以及如何设计实体。
例如,不清楚 Violation 实体中是否应包含 ruleId。
有这样的构造函数是否正确:
class Violation
{
public function __construct(ViolationId $vid, RuleId $rid, /* other parameters /*)
}
或者就这样
class Violation
{
public function __construct(ViolationId $vid, /* other parameters /*)
}
如果在 Violation 中有 ruleId 是可以的,那么如何用 ORM(Hibernate 或 Doctrine)映射它。因为 Doctrine 处理关系和对象,而不是简单的整数。
请指教。
【问题讨论】:
标签: hibernate symfony orm doctrine-orm domain-driven-design