каким будет jooq-эквивалент представления DDL?

У меня есть приложение, которое теперь реализовано как несколько представлений, и некоторые запросы jooq, которые зависят от представлений.

почему бы не переместить весь слой в jooq? то есть реализовать представления в jooq? каким будет умный способ сделать это? и каковы будут последствия для производительности?


person toilinginobscurity    schedule 19.12.2013    source источник


Ответы (1)


Существует ожидающий запрос функции с низким приоритетом в jOOQ для поддержки представлений, написанных в jOOQ:

Вы уже можете создать эквивалент представлений базы данных, расширив jOOQ:

В зависимости от вашей базы данных перемещение кода представления из БД на прикладной уровень действительно может иметь небольшое влияние на производительность, поскольку БД больше не может собирать статистику для (именованного) представления. Однако немногие базы данных действительно делают это, если только вы не создаете материализованные представления.

Преимущество сохранения представлений, написанных с помощью jOOQ в Java, заключается в следующем:

  • Упрощенная миграция. Вам не нужно писать DDL для переноса представлений между разными версиями вашего приложения.
  • Расширенное приложение функции jOOQ для просмотра. Например, при необходимости вы можете преобразовать SQL своего представления с помощью SPI преобразования SQL.
person Lukas Eder    schedule 22.12.2013
comment
Можно ли как-нибудь втиснуть это в CustomTable или расширение класса таблицы? Я просто хочу беспрепятственно подмножить содержимое таблицы для моих потребителей API, но схематически требуется соединение, которое я хотел бы скрыть. - person kylejmcintyre; 25.08.2015
comment
@kylejmcintyre: Да, ссылка на части пользовательского запроса — это то, что я имел в виду, делая это через файл CustomTable. Это все еще немного многословно, но оно будет делать то, что вы хотите - person Lukas Eder; 25.08.2015
comment
Большое спасибо за ваш ответ. Я пытаюсь расширить CustomTable, но не могу понять, куда поместить свой собственный sql, который подмножает строки основной таблицы. В документах говорится, что нужно расширить accept(), но в TableImpl он помечен как final. Я могу расширить toSQL(), но никто этого не слушает. Я на 3.5.3. Что я делаю не так? - person kylejmcintyre; 25.08.2015