Ответ 1
Поскольку репозиторий представляет собой концепцию, полученную из Domain Driven Design, думать о таблицах базы данных является неправильным подходом. По определению вы получаете доступ к совокупным корням из репозитория. Эффективно репозиторий имитирует их коллекцию.
Теперь, что формирует совокупный корень? Наверное, еще интереснее: что нет? Это, конечно, сильно зависит от вашего домена, но позвольте мне привести вам пример здесь. Order
, содержащий LineItems
, как правило, моделируется как совокупный корень. Это связано с характером композиции Order
. A LineItem
не существует без окружающего Order
.
Обычно механизмы доступа настойчивость должны следовать принципам домена. Таким образом, вы бы моделировали как Order
, так и LineItem
как @Entity
классы, но только создавали OrderRepository
, в качестве формы, совокупный корень и эффективно контролировали правила согласованности в графе объектов.
Мы также настоятельно рекомендуем не использовать базовые интерфейсы хранилища конкретных баз данных, поскольку они, как следует из названия, раскрывают информацию о магазине (например, flush()
) для клиентов, о которых не следует знать, если это возможно. Подробнее об этом в моем ответе здесь.