Я сам с этим немного борюсь. У меня есть граф объекта с 30 объектами. Большинство из них связаны через двунаправленные отношения. Некоторые соединения очень полезны, а некоторые нет, потому что они служат только для удобства в случае делегирования между объектами.JPA Двунаправленные отношения против репозитория/DAO-Use
Кроме того, у меня есть хранилища для создания/поиска/хранения объектов. К сожалению, для каждого объекта существует репозиторий, и похоже, что эти репозитории являются окнами в мой граф объектов. Является ли такая вещь рекомендуемой реализацией?
Из-за кода плиты котла, вызванного двунаправленными отношениями, поддерживающими родительские/дочерние ассоциации, у меня возникла идея заменить некоторые из этих двунаправленных отношений и поместить их в репозиторий. Некоторые из этих связей полезны только в сочетании с дополнительными параметрами. Давайте возьмем классический Заказчик < -> Пример заказа. Я считаю, что направление Customer -> Order не всегда хорошо, потому что иногда необходимо ограничить результат конкретным периодом.
Мой вопрос: что вы рекомендуете выбраться из этой борьбы? Вы всегда используете двунаправленные отношения в больших проектах для удобства? Или вы заменяете их конкретными запросами репозитория? Можно ли поддерживать репозитории для каждого объекта?
Я разорванный на некоторое время ... :-(
спасибо. Фактически, я перепутал некоторые вещи, которые я узнал недавно. За последние пару недель я начал работу с Domain-Driven-Design. К сожалению, у меня были проблемы с определением моих агрегатов из-за проблем с производительностью. Например, есть университет с примерно 400 курсами обучения. Таким образом, университет будет моим совокупным корнем, и курс исследований будет внутри него. Каждый раз, когда мне нужно работать с объектом, он должен быть загружен из базы данных, и мое понимание производительности было раздраженным. И поэтому я решил сделать совокупный корень на сущность с репозиторием. – Thomas
Но это не кажется правильным, потому что большинство сущностей имеют двунаправленные отношения, и поэтому вы можете прыгать в график от каждого объекта (с помощью репозитория (кстати, аналогичной реализации, такой как версия Spring) и перемещаться по всем направлениям Нет никаких ограничений, и это то, что не кажется правильным. Итак, я считаю, что подход DDD прав, но есть уже некоторые открытые вопросы. – Thomas
Дизайн, как правило, имеет самые жесткие решения. Домены могут помочь много. DAO или Entities действительно представляют собой просто таблицы. Я часто создавал объекты «View» или DTO вместе с уровнем сервиса, уникальным для каждого отдела. Таким образом, у меня есть объекты, которые имеют смысл для отдела, который их использует. –