Я начинаю работу в компании среднего размера, которая в основном занимается написанием пользовательских приложений, взаимодействующих с их системой ERP. Это мой первый раз, когда я выполняю такую работу, поэтому концепция ERP является новой для меня, и я изучаю ее по частям.
На данный момент я написал только два приложения и изучил модель базы данных по ходу работы и только столько, сколько мне нужно, чтобы выполнить работу, но даже с таким ограниченным количеством я могу начать видеть большую картину. Моя идея состояла в том, чтобы написать библиотеку со всеми хранящимися там объектами отображений / моделей, чтобы новое приложение могло просто ссылаться на эту библиотеку. После этого каждое приложение будет создавать собственный репозиторий, ограничивающий доступ только тем, что ему нужно, и перспективой, которая имеет смысл.
Проблема / вопрос, который у меня есть, заключается в том, как бороться с отношениями внутри (N) отображений Hibernate. Если у меня есть объект заказа с полными отношениями, сопоставленными в этой базовой библиотеке, ничто не помешает кому-то навсегда путешествовать по этим отношениям (если я единственный программист ...). Таким образом, использование хранилища как своего рода ограничение области действия не работает вообще в этом смысле.
Если вместо этого я ограничиваю отношения в (N) отображении Hibernate для этого объекта заказа, репозиторий возвращает объект заказа, связанный только с теми отношениями, которые требуются для его области действия. Недостатком является то, что теперь мне нужно создавать сопоставления для каждого проекта вместо того, чтобы иметь один «хранилище сопоставлений».
Как другие люди справляются с этим?
Вроде не связано, но я также переводил (N) постоянные объекты Hibernate, которые могут состоять из нескольких отношений, в своего рода отдельный непостоянный объект, более подходящий для конкретного приложения (обычно гораздо более подверженный влиянию UI). Это обычное дело, или я отбрасываю некоторые преимущества (N) Hibernate, забирая возвращенные объекты и переводя их во что-то еще?
пс. О тэге DDD ... Я не знаю, подробно ли это описано в DDD, но у меня есть книга на заказ. Хотя я не уверен, что можно найти хороший ресурс до того, как книга появится.