2012-01-07 8 views
0

私は春、冬眠、そしてDDDに続く初めてのEコマースウェブサイトを作成しようとしています。DDDのユーザー、住所、国

現状はこれです。私は、アドレスのリスト(前のものと現在のもの)を持つ集約ルートとしてオブジェクトUSERを考えています。すべてのアドレスには国(アイソコード、名前)が関連付けられています。

私は、値オブジェクト..厳密にユーザーに関連しています。 @Entityクラスのユーザーで

があります: @ElementCollection @CollectionTable(名前= "アドレス"、joinColumns = @JoinColumnを(名前= "ADDRESS_ID")) @OrderColumn(名前= "USER_ID") プライベートリストのアドレス。

@Embeddableクラスのアドレス私は、初期化時に移入できるCountry用の別のテーブルを作成したいと思います。アドレスには外部キーしかありません。

私は@Embeddable国を試してみましたが、住所 に 民間国の国

とも@SecondaryTableを@Embedded ..しかし、これが唯一の@Entityクラスで使用することができます..だから、問題は国の分野ということですアドレステーブルの中に保存されます。

@Entity for Countryを作成する必要がありますか?あるいは、これらのクラスをマップする別の方法がありますか?

おかげ

+1

Eric Evansの本を読んでいますか? –

+1

私は通常、絶対的な文を作るのは好きではありませんが、この場合は例外を作成します。**絶対に、データベーススキーマにあなたのドメインモデルの設計に影響を与えないようにしてください。 * DDD 101。 – MattDavey

答えて

-1

私は本当にCountry埋め込みオブジェクトを作るのポイントが表示されていません。同じコードと名前を、同じ国をすべて指し示すのではなく、何度も何度も繰り返します。エンティティによってマッピングされたすべての国のテーブルを持ち、参照するすべての住所に国番号との関連付けをManyToOneにします。

ところで、アドレスを入力する必要があるUIを設計したい場合は、選択する国を選択するボックスが必要になると思います。コードと名前を入力しないでください国ごとに手動でだから、CountryエンティティとfindAllメソッドをすべて取得し、選択ボックスに入力する必要があります。

関連する問題