JOOQ

jooq-logo-whiteJOOQ – еще один способ сходить в базу из Java. Может сгенерировать код по вашей БД и имеет Fluent API для построения и выполнения запросов.

Рассмотри основные утверждения от создателей почему мы должны использовать JOOQ:

* Database First – Выдвигается утверждение что JOOQ легко натягивается на существующую базу в отличие от этих ваших непонятных ORM. В противовес хочу сказать что мы также легко можем сгенерировать JPA-annotated POJO из существующей базы.
* Typesafe SQL – Понятно, мы сгенерировали из базы POJO и теперь пишем запросы на своем DSL. Тот же эффект можно получить используя Metamodel Generation.
* Code Generation – Устали переименовывать названия колонок и таблиц в Java коде? Используйте JOOQ и его код генерацию. Ну или JPA Metamodel.
* Active Records – ORM?!
* Multi-Tenancy – Опять же непонятно о чем они говорят, в описании идет речь о нескольких окружениях. В любом случае multi-tenancy в наших ужасных ORM есть.
* Standardisation – JPA тоже умеет диалекты.
* Query Lifecycle – не можете разобраться в ORM? тогда используйте JOOQ – примерно так описывается этот пункт на официальном сайте.
* Procedures – Да, тут JOOQ крут как никогда, посмотрите на это:

-- Check whether there is an author in AUTHOR by that name and get his ID
CREATE OR REPLACE PROCEDURE author_exists (author_name VARCHAR2, result OUT NUMBER, id OUT NUMBER);

// Make an explicit call to the generated procedure object:
AuthorExists procedure = new AuthorExists();

// All IN and IN OUT parameters generate setters
procedure.setAuthorName("Paulo");
procedure.execute(configuration);

// All OUT and IN OUT parameters generate getters
assertEquals(new BigDecimal("1"), procedure.getResult());
assertEquals(new BigDecimal("2"), procedure.getId();

Но если подумать – много ли у вас хранимых процедур? Нужно ли добавлять в проект еще один кодо-генератор? Действительно ли JOOQ решает реальные проблемы?

Да, JOOQ весьма интересен, но лично после прочтения документации (по диагонали) мой энтузиазм поугас и я не стану даже делать hello world с использованием JOOQ. Ведь сейчас есть Jpa Repository, и заниматься низкоуровневыми вещами как JOOQ нету никакого желания.

Если есть другое мнение относительно данного проекта – буду рад услышать ваше мнение в комментариях.

Leave a Reply

Your email address will not be published. Required fields are marked *