Скажем, у меня есть вложенные объекты, например:Весенние данные JPA: Дизайн вложенных объектов - однонаправленный? двунаправленная?
Customer
Project
Rent
Fault
(and maybe deeper)
Клиент содержит права пользователя, я должен проверить. Тогда есть способ обновить ошибку:
void updateFault(long faultId, String content, User user) { .. }
Вопрос: Как получить от вины к клиенту?
- Опция: Использование обратной ссылки на родитель: Вина сдать, снять, проект Заказчика
- Опция: Использование обратной ссылки от Fault Заказчика (а также от продажи клиента и т.д.)
Опции: Отсутствие обратной связи и увеличение количества запросов к базе данных, таких как
rent = rentRepository.findByFault (fault);
проект = проектRepository.findByRent (аренда);
клиент = клиентRepository.findByProject (проект);
Я прочитал, что мне следует избегать двунаправленной ссылки. Но что, если у меня 20 уровней и много данных? Тогда вариант № 3 не подходит вообще.
Я использую Spring Data JPA в проекте Spring MVC.
Вариант 1 ist прекрасно. Узнайте больше о преимуществах двунаправленных отношений. http://in.relation.to/2016/09/28/performance-tuning-and-best-practices/ –
В чем причина того, что вы переходите от более общей общей концепции к более конкретной? Обычно вы делаете это совсем наоборот. Неисправность связана с арендой, арендой проекта, проекта клиенту. Таким образом, вы можете использовать запросы репозитория для более конкретного поиска элементов более универсальными концепциями (например, такими как FaultRepository.findByCustomer (...), используя запрос объявления вручную). –
@OliverGierke спасибо. Я никогда не узнавал, что я должен делать это наоборот. Это только с точки зрения ООП (у клиента есть список проектов ..). У вас есть более глубокая информация (учебники) об этом? Я постараюсь завтра. – NoobieNoob