2012-01-07 3 views
0

저는 봄, 겨울잠, 그리고 처음으로 DDD를 따르는 전자 상거래 웹 사이트를 만들려고합니다.지도 사용자, 주소, DDD가있는 국가

현재 상황은 이렇습니다. 나는 주소 목록 (이전의 것들과 현재의 것)을 가진 집계 루트로서 객체 USER를 고려하고 있고 모든 주소에 대해 국가 (아이소 코드, 이름)가 연관되어있다.

나는 주소와 국가 가치 개체입니다 .. 엄격하게 사용자와 관련이 있습니다. @Entity 클래스 사용자에

가 : @ElementCollection @CollectionTable (이름 = "주소", joinColumns = @JoinColumn을 (이름 = "address_id")) @OrderColumn (이름 = "USER_ID") 개인 목록 주소;

@Embeddable 클래스 주소 초기화 할 때 채울 수있는 국가에 대한 별도의 테이블을 만들고 싶습니다. 주소에는 외래 키만 있습니다.

나는 @Embeddable 나라를 시도하고 주소 에 @Embedded 개인 나라 국가

또한 @SecondaryTable ..하지만이 .. @Entity 클래스에서만 사용할 수 있습니다 그래서 문제는 나라의 필드가 주소 표 안에 저장됩니다.

국가 별 @Entity를 만들어야합니까? 아니면이 클래스를 매핑하는 또 다른 방법이 있습니까?

감사

+1

Eric Evans의 책을 읽었습니까? –

+1

절대적인 문장을 만드는 것을 좋아하지는 않지만이 경우에는 예외를 만들 것입니다. ** 절대적으로, 데이터베이스 스키마가 도메인 모델의 디자인에 어떤 영향도 끼치 지 않도록해야합니다. * * DDD 101. – MattDavey

답변

-1

정말 Country 포함 된 개체를 만드는 지점을 표시하지 않습니다. 같은 국가를 가리키는 것이 아니라 모든 사용자에 대해 동일한 코드와 이름을 반복해서 사용하게됩니다. 엔티티로 매핑 된 모든 국가의 테이블을 가지고 모든 주소가 참조로 설정되도록하려면 ManyToOne 국가와 연결해야합니다.

여기에 주소를 입력해야하는 UI를 디자인하려면 선택할 국가를 표시하는 선택 상자가 필요합니다. 코드와 이름을 입력하지 않아도됩니다. 국가마다 수동으로 그러므로 모두 가져오고 선택 상자를 채우려면 Country 엔티티와 findAll 메소드가 필요합니다.