То, что мы хотим сделать, это разделить сущности и сервисы, связанные в разных модулях.
Реальность заключается в том, что ваше решение технически не делает этого, связь между этими двумя сущностями все еще существует , В первом сопоставлении обе стороны владели ассоциацией, в которой, как и во втором, она единолично принадлежит Person
.
Всякий раз, когда вы хотите отделить модели сущностей, подобные этой, обычно более приемлемой практикой является некоторая форма прокси-объекта в одном модуле, который предназначен для ссылки на или предоставления базовой c информации о реальном объекте, который живет в другом месте, в вашем случае - в другом модуле.
Другими словами:
Персональный модуль
- Персональный объект
- Автопредприятие (модель прокси)
Автомобиль Модуль
- Автомобильная сущность
- Потенциально личность (прокси-модель)
Идея состоит в том, чтобы использовать что-то вроде Debezium или другое триггер / ловушка, чтобы уведомить другие модули, когда реальная сущность изменилась, чтобы ее прокси-модель могла отражать изменения Это позволит вам получить полное представление о модели аудита из одного модуля, а не пытаться получить ее по нескольким модулям, что фактически сводит на нет вашу цель разделения.
Причина, по которой эти "прокси «модели важны тем, что они позволяют модели объекта одного модуля со временем меняться, практически не влияя на модели смежных модулей, которые, вероятно, нуждаются только в подмножестве исходных данных.
Другой альтернативой является принятие шаг назад и осознайте, что, возможно, вы пытаетесь разделить свои данные на модули таким образом, чтобы это не соответствовало вашей объектной модели и отношениям, и, следовательно, то, что у вас было, является приемлемым, учитывая обстоятельства и отношения, существующие в модели объектов. во-первых.
Моя проблема в том, что когда я обновляю автомобиль, для моей персоны не создается запись, но я хочу ее. Возможно ли это?
В вашей второй картографической модели нет, это невозможно. Причина этого заключается в том, что в этом случае отношение принадлежит только сущности Person
, и модель аудита для Car
не имеет представления о том, что она вообще имеет какую-либо связь с таковой Person
, поскольку обратного нет ( не обладающего) отображением в модели.
При таком сопоставлении объектов единственный способ, которым это будет работать, заключается в том, что при изменении Person
некоторые атрибуты в модели Car
необходимо будет изменить так, что это вызовет запись аудита для этой организации. Естественно, что это противоречит всему процессу их разделения в первую очередь, следовательно, посредством комментария относительно альтернативы, чтобы принять необходимость сосуществовать вместе.