Исходные данные:
Таблица person
id | firstname | lastname | birthdate ...
Таблица order
id | product_id | count | price | person_id ...
Таблица product
id | name | price ...
(Таблицы вымышленные, нужны только для того, что описать ситуацию)
В проект есть сущности (Entity) под каждую таблицу с внешними ключами и связями.
Мне нужно получить таблицу/объект в которой будут данные из каждой этой таблицы. К примеру что-то вроде такого...
order.id | product.name | order.count | person.firstname | ...
Как мне это правильнее реализовать?
В голову приходит 2 варианта:
1. Создать в БД view которая соберет все нужные данные в одну таблицу. В таком случае придется создавать новое
Entity, сервисы и репозитории и т.п.
2. В OrderService получить все необходимые записи отдельными запросами к каждой сущности. Если таких данных
много (>100 000), то это огромное кол-во запрос к БД ради одного результата. Так же возникает вопрос как мне
получить все заказы, к примеру, у которых person младше 18 лет.
Какой из этих вариантов более правильный или они оба неправильные и существуют какие-то другие, более правильные, варианты? Может есть у кого ссылки на github, где есть реализации таких задач?
Собственно с точки зрения юзера правильным будет отображение информации на экране через 200-300мс после нажатия кнопки)
п.1 - чуть ближе к этому, но стоит посмотреть в сторону stored procedure с параметрами фильтрации, ордеринга и т.п. и уже от этой сущности плясать, чтобы можно было получить в том числе один раз top 10 заказов от несовершеннолетних, а другой - список заказов от несовершеннолетних из категории подакцизных товаров... в третий раз то же самое за период и т.п.