Я пытаюсь разделить свое приложение на модули с помощью функций, упакованных в отдельные банки, такие как feature-a.jar, feature-b.jar,... и т. д.
Баночки с отдельными функциями, такие как feature-a.jar, должны содержать весь код для функции, включая объекты jpa, бизнес-логику, остальные API, модульные тесты, интеграционный тест и т. д.
Проблема, с которой я сталкиваюсь, заключается в том, что двунаправленные отношения между объектами JPA вызывают циклические ссылки между файлами jar. Например, объект Customer должен быть в customer.jar, а Order должен быть в order.jar, но Customer ссылается на заказ, а заказ ссылается на клиента, что затрудняет их разделение на отдельные jar-файлы/проекты eclipse.
Варианты, которые я вижу для работы с циклическими зависимостями в объектах JPA:
- Вариант 1: поместить все сущности в одну банку/один проект
- Вариант 2. Не сопоставляйте определенные двунаправленные отношения, чтобы избежать циклических зависимостей между проектами.
Вопросы:
- Какие правила/принципы вы использовали, чтобы решить, когда делать двунаправленное отображение, а когда нет?
- Удалось ли вам разбить объекты jpa на их собственные проекты / jar по функциям, если да, то как вы избежали проблем с циклическими зависимостями?