Карта пользователя, адрес, страна с 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
метод, чтобы получить их все и заполнить поле выбора.