2012-01-07 78 views
0

我试图创建一个电子商务网站使用春季,冬眠和第一次后DDD。地图用户,地址,国家与DDD

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

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

在@Entity类用户有: @ElementCollection @CollectionTable(名称= “地址”,joinColumns = @JoinColumn(名称= “ADDRESS_ID”)) @OrderColumn(名称= “USER_ID”) 私人列表地址;

在@Embeddable类地址我想创建一个单独的国家表,我可以在初始化期间填充和地址只有一个外键。

我试图@Embeddable国家和地址 @Embedded 私人乡村国家

也@SecondaryTable ..但是这只能在@Entity课堂上使用。所以问题是,国家的领域保存在地址表内。

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

感谢

+1

你读过Eric Evans的书吗? – 2012-01-07 14:24:16

+1

我通常不喜欢做出绝对的声明,但在这种情况下我会做出例外...... **绝对不能让数据库模式对您的领域模型的设计产生任何影响。 * DDD 101。 – MattDavey 2013-06-18 17:00:15

回答

-1

我实在看不出制作Country嵌入对象的点。您将为所有用户一次又一次地重复相同的代码和名称,而不是仅指向相同的国家/地区。只需与所有国家建立一个表格,由一个实体进行映射,并使所有地址参照与国家/地区有关的ManyToOne

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