2012-01-07 126 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方法來獲取它們並填充你的選擇框。