JOOQ моя любимая библиотека в java для работы с БД

JOOQ (Java Object Oriented Querying) - open source инструмент с кодогенерацией для работы с SQL в Java. Из коробки JOOQ предоставляет удобный DSL для составления запросов, а также генератор классов на основе метаданных ДБ.

Как это выглядит?

Например для запроса с INSERT

INSERT INTO Table (Field, AnotherField)
VALUES ('value1', 'value2');

при использовании генерации, код будет выглядеть так

db.insertInto(TABLE)
    .set(TABLE.FIELD, "value1")
    .set(TABLE.ANOTHER_FIELD, "value2")
    .execute();

Для SELECT

SELECT * FROM Table
WHERE Field = 'value1' AND AnotherField = 'value2'

вот так

Record result = db.select().from(TABLE)
                .where(TABLE.FIELD.equal("value1")
                        .and(TABLE.ANOTHER_FIELD.equal("value2"))).fetchAny();

Где TABLE, FIELD - public static final поля сгенеренного Table.class.

Мапинг

При этом JOOQ умеет мапить получившейся записи, например result из предыдущего класса можно замапить на Table.class

Table resultTable = result.into(Table.class);

Еще

Можно пойти дальше и добавить генерацию assert-ов на основе assertJ для сгенеренных классов

 TableAssert.assertThat(resultTable)
                .hasField(expectedField).hasAnotherField(expectedAnotherField);

Чем нравится

  • DSL
  • Кодогенерация

Минусы

Из минусов можно отметить, что далеко не все БД поддерживаются, при этом поддержка большинства БД платно