Enterprise Intermediário

Substitua SQL baseado em strings com JDBC puro pela DSL SQL type-safe e fluente do jOOQ.

✕ Raw JDBC
String sql = "SELECT id, name, email FROM users "
           + "WHERE department = ? AND salary > ?";
try (Connection con = ds.getConnection();
     PreparedStatement ps =
             con.prepareStatement(sql)) {
    ps.setString(1, department);
    ps.setBigDecimal(2, minSalary);
    ResultSet rs = ps.executeQuery();
    List<User> result = new ArrayList<>();
    while (rs.next()) {
        result.add(new User(
            rs.getLong("id"),
            rs.getString("name"),
            rs.getString("email")));
    }
    return result;
}
✓ jOOQ
DSLContext dsl = DSL.using(ds, SQLDialect.POSTGRES);

return dsl
    .select(USERS.ID, USERS.NAME, USERS.EMAIL)
    .from(USERS)
    .where(USERS.DEPARTMENT.eq(department)
        .and(USERS.SALARY.gt(minSalary)))
    .fetchInto(User.class);
Viu um problema com este código? Nos avise.
🔒

Colunas type-safe

Nomes de colunas são constantes Java geradas — erros de digitação e incompatibilidades de tipo se tornam erros de compilação em vez de falhas em tempo de execução.

📖

Fluência SQL

A DSL do jOOQ espelha a sintaxe SQL de perto, então JOINs complexos, subqueries e CTEs continuam legíveis.

🛡️

Livre de injection por design

Parâmetros são sempre vinculados com segurança — sem concatenação de strings significa sem risco de SQL injection.

Abordagem Antiga
JDBC puro
Abordagem Moderna
jOOQ SQL DSL
Desde o JDK
11
Dificuldade
Intermediário
JDBC versus jOOQ
Disponível

A edição open-source do jOOQ suporta todos os principais bancos de dados open-source; bancos comerciais mais antigos requerem licença paga

jOOQ (Java Object Oriented Querying) gera código Java a partir do esquema do banco de dados, transformando nomes de tabelas e colunas em constantes Java type-safe. A DSL fluente espelha a sintaxe SQL, tornando as consultas legíveis e composíveis. Todos os parâmetros são vinculados automaticamente, eliminando o risco de SQL injection. Diferente do JPA/JPQL, o jOOQ abraça o SQL por completo — window functions, CTEs, cláusulas RETURNING e extensões específicas de cada banco são cidadãos de primeira classe.

Compartilhar 𝕏 🦋 in