Выпущен jOOQ 3.13 с дополнительным API и инструментарием для управления DDL – Java, SQL и jOOQ.

1 min


Выпущена версия jOOQ 3.13 с поддержкой CockroachDB, гораздо большим количеством API и инструментов для управления DDL, а также поддержкой темпоральной таблицы SQL: 2011

Начиная с этого выпуска, мы будем и дальше поддерживать нашу поддержку парсинга,
перевод, выполнение, а теперь и интерпретация операторов DDL. Вождение
Force – лучшая поддержка генерации кода, но в будущем также лучше
интеграция с системами управления изменениями баз данных, такими как Flyway или Liquibase.

Мы добавили поддержку очень многообещающего нового диалекта: CockroachDB.

Мы начинаем поддерживать одну из самых интересных функций SQL: 2011: временная
таблицы для управления временем системы и приложений, и мы в целом улучшили
как мы создаем и распространяем jOOQ для наших платящих клиентов.

Диалекты SQL

Мы работали вместе с командой замечательных инженеров в CockroachDB, чтобы ускорить
наша недавно добавленная официальная поддержка CockroachDB в jOOQ Professional и
Корпоративные издания. Хотя многие пользователи успешно использовали POSTGRES
диалект с CockroachDB для простых интеграций, этот новый диалект теперь полностью
Интеграция проверена и поддерживается для будущих версий jOOQ и CockroachDB.
интеграция исправила множество проблем и мелких различий, которые у нас есть
встречается в генераторе кода и библиотеке времени выполнения.

Мы добавили поддержку различных функций, которые теперь доступны в Firebird 3.0+,
MariaDB 10.3+, MySQL 8+ и PostgreSQL 10+.

Интерпретация DDL

Наши самые большие инвестиции были сделаны в области интерпретации DDL. поскольку
jOOQ 3.9, мы можем анализировать все больше и больше синтаксиса SQL. Следующим логичным шагом является
для интерпретации проанализированных (или обычных, построенных DSL) операторов DDL по порядку
поддерживать инкрементную метамодель в памяти базы данных. Это имеет
разнообразие преимуществ, которыми мы воспользуемся в этом выпуске и в
будущее.

Основные преимущества этой версии включают в себя:

  • Возможность создания различий между двумя версиями схемы, программно через Meta.migrateTo (Meta), в командной строке через DiffCLI (https://www.jooq.org/doc/latest/manual/sql-building/schema-diff-cli) или онлайн, через наш сайт: https://www.jooq.org/diff,
  • Такая разница или сама метамодель может использоваться для специальных самоанализов или формально для автоматизированных миграций с помощью инструментов, построенных на основе jOOQ. Будущие версии будут предлагать такие миграции из коробки.
  • К сожалению, мы еще не заменили нашу базу данных DDLD, поддерживаемую H2, новыми возможностями интерпретации DDL. Это высокий приоритет для jOOQ 3.14, хотя

В контексте этих инвестиций мы улучшили ряд
инфраструктура, которая была необходима для этих функций и что пользователи могут получить выгоду как
Что ж. Эти улучшения включают в себя:

  • Новая база данных LiquibaseDatabase, которая использует Liquibase за кулисами для имитации миграции схемы в памяти (аналогично DDLDatabase for Flyway) для обратного инжиниринга этого для генератора кода. Если вы используете Liquibase, скорее всего, вам больше не нужно подключаться к реальной базе данных, чтобы использовать генератор кода jOOQ. Более подробная информация здесь: https://blog.jooq.org/2019/10/16/how-to-simulate-a-liquibase-migration-using-h2/
  • Теперь мы поддерживаем включение текста SQL в сгенерированный код и другие части метамодели времени выполнения, в том числе для ограничений и представлений CHECK.
  • Реализовано множество улучшений в API org.jooq.Meta с поддержкой JDBC DatabaseMetaData.
  • В API, парсер и другие инструменты добавлено множество дополнительных операторов DDL и поддержки синтаксиса.
  • Метамодель времени выполнения была дополнена новой информацией, такой как флаги последовательности, проверочные ограничения, информация о типе таблицы и многое другое.

Поддержка височной таблицы

Возможно, самая захватывающая «новая» функция стандарта SQL: 2011 – это временные таблицы,
расширение по сравнению с исторической функцией ретроспективного запроса Oracle, и многое
Больше.

Во многих системах одинарное или двухвременное версионирование данных имеет важное значение. Два
Размеры версий, которые теперь поддерживаются в jOOQ:

  • Управление версиями системы, полезное для резервного копирования и аудита, где каждая операция мутации приводит к созданию резервной копии данных в таблице управляемого резервного копирования.
  • Управление версиями приложения, полезно для данных, которые имеют ограниченную своевременную достоверность, например, для цены продукта, которая может иметь временную скидку.

jOOQ 3.13 поддерживает org.jooq.Period и связанный API в Select, Update и Delete
манипулировать и запрашивать временные таблицы в диалектах, которые поставляются с родным
поддержка этих функций. В разной степени эти диалекты включают в себя:

  • DB2
  • MariaDB
  • оракул
  • SQL Server

Эмуляции не полностью поддерживаемого синтаксиса в вышеупомянутых диалектах, а также в
все другие диалекты будут добавлены в будущих версиях jOOQ, что сделает их временными
Обоснованность проблема прошлого.

Подробнее здесь:
https://www.jooq.org/doc/3.13/manual/sql-building/table-expressions/temporal-tables/

Это коммерчески лицензированная функция.

Улучшения сборки

Мы потратили много времени на улучшение нашей автоматизации сборки, используя более новые
Функции Jenkins, которые позволяют нам публиковать сборки чаще, особенно
сборки снимков предстоящих минорных выпусков для ранних пользователей, а также патч
релизы для клиентов, нуждающихся в срочных исправлениях:

https://www.jooq.org/download/versions

Эти новые выпуски также включают в себя пробные версии для Java 6, 8, 11, без
нужно зарегистрироваться на расширенные испытания.

В дополнение к вышесказанному, мы улучшили и продолжаем улучшать наши
документирование функций в каждом выпуске, в будущем.

Улучшение процедурного API

В jOOQ 3.12 мы ввели поддержку процедурных языков, которыми мы являемся
улучшение в каждом новом выпуске. В jOOQ 3.13 добавлена ​​поддержка дополнительных
процессуальные заявления, в том числе:

  • EXECUTE для динамического выполнения SQL, встроенного в процедурные блоки
  • ВЕРНУТЬСЯ вернуться к функциям
  • Поддержка простого оператора SQL

В будущем мы планируем также поддержать создание функций,
процедуры и триггеры через стандартный jOOQ API.

Подробнее здесь:
https://www.jooq.org/doc/3.13/manual/sql-building/procedural-statements/

Это коммерчески лицензированная функция.

jOOQ-Refaster

Некоторые из наших пользователей добились большого успеха, используя нашу систему проверки или
Интеграции ErrorProne, которые позволяют проводить некоторый статический анализ использования API в
код клиента (например, простой риск SQL / SQLi, совместимость диалектов и т. д.)

Начиная с jOOQ 3.13, мы также добавляем поддержку подпроекта ErrorProne
«Refaster», который позволяет автоматически переписывать неправильное использование API во что-то
лучше, например:

  • Перенесите устаревшее использование API, например field.trim (), на его трим-замену (field)
  • Миграция неэффективного использования SQL, например ctx.fetchCount (select)! = 0, в ctx.fetchExists (select)

Полный список изменений можно найти на нашем сайте:
https://www.jooq.org/notes


0 Comments

Ваш адрес email не будет опубликован. Обязательные поля помечены *