使用DDD映射用户,地址,国家/地区

时间:2012-01-07 14:18:20

标签: hibernate domain-driven-design street-address country

我正在尝试使用spring,hibernate创建一个电子商务网站,这是DDD之后的第一次。

目前情况就是这样。我正在考虑对象USER作为聚合根,它有一个地址列表(先前的..和当前的),并且每个地址都有一个国家(isocode,name)...

我假设地址和国家是价值对象..严格与用户相关。

在@Entity类用户中有:     @ElementCollection     @CollectionTable(name =“addresses”,joinColumns = @JoinColumn(name =“address_id”))     @OrderColumn(名称= “USER_ID”)     私人名单地址;

在@Embeddable类地址中,我想为Country创建一个单独的表,我可以在初始化期间填充该表,而Address只有一个外键。

我尝试了@Embeddable Country和地址     @Embedded     私人国家/地区

以及@SecondaryTable ..但这只能在@Entity类中使用..所以问题是Country的字段保存在地址表中。

我应该为国家创建@Entity吗?或者还有另一种方法来映射这些类?

由于

1 个答案:

答案 0 :(得分:-1)

我真的没有看到让Country成为嵌入对象的重点。您将为所有用户一次又一次地重复相同的代码和名称,而不是仅将它们全部指向相同的国家/地区。只需拥有一个包含所有国家/地区的表格,由实体映射,并使所有地址引用与国家/地区有ManyToOne关联。

顺便说一句,如果你想设计一个你必须输入地址的用户界面,我猜你需要一个显示国家/地区的选择框:你不会输入代码和每次手动的国家名称。因此,您需要Country实体和findAll方法来获取所有内容并填充您的选择框。