Карта пользователя, адрес, страна с DDD

Я пытаюсь создать сайт электронной коммерции, используя spring, hibernate и впервые после DDD.

На данный момент ситуация такая. Я рассматриваю объект USER как совокупный корень, у которого есть список адресов (предыдущие и текущие), и для каждого адреса связана страна (изокод, имя).

Я предположил, что Адрес и Страна являются объектами значения.. строго связаны с пользователем.

В классе @Entity User есть: @ElementCollection @CollectionTable(name = "address", joinColumns = @JoinColumn(name = "address_id")) @OrderColumn(name="user_id") private List address;

В классе @Embeddable Address я хотел бы создать отдельную таблицу для Country, которую я могу заполнить во время инициализации, и у Address есть только внешний ключ.

Я попытался @Embeddable Страна и в адресе @Embedded частная Страна страны

а также @SecondaryTable .. но это можно использовать только в классе @Entity.. Таким образом, проблема в том, что поля Country сохраняются внутри таблицы адресов.

Должен ли я создать @Entity для страны? Или есть другой способ сопоставить эти классы?

Спасибо

1 ответ

Я действительно не вижу смысла делать Country встроенный объект. Вы будете повторять одни и те же коды и имена снова и снова для всех своих пользователей, вместо того, чтобы просто указывать им на одни и те же страны. Просто имейте таблицу со всеми странами, сопоставленными с объектом, и сделайте так, чтобы все адреса имели ManyToOne ассоциация со страной.

Кстати, если вы хотите создать пользовательский интерфейс, в котором вам нужно ввести адрес, я думаю, вам понадобится поле выбора, отображающее все страны на выбор: вы не будете вводить код и название страны вручную каждый раз, Так что вам понадобится Country сущность и findAll метод, чтобы получить их все и заполнить поле выбора.

Другие вопросы по тегам