Enterprise Intermedio

Sostituisci il SQL basato su stringhe JDBC con il DSL SQL type-safe e fluente di 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);
Vedi un problema con questo codice? Faccelo sapere.
🔒

Colonne type-safe

I nomi delle colonne sono costanti Java generate — i typo e le mancate corrispondenze di tipo diventano errori del compilatore invece di fallimenti runtime.

📖

Fluidità SQL

Il DSL jOOQ rispecchia da vicino la sintassi SQL, così i JOIN complessi, le subquery e i CTE rimangono leggibili.

🛡️

Injection-free by design

I parametri sono sempre legati in modo sicuro — nessuna concatenazione di stringhe significa nessun rischio di SQL injection.

Approccio Vecchio
JDBC grezzo
Approccio Moderno
jOOQ SQL DSL
Dal JDK
11
Difficoltà
Intermedio
JDBC vs jOOQ
Disponibile

L'edizione open-source di jOOQ supporta tutti i principali database open-source; i database commerciali più vecchi richiedono una licenza a pagamento

jOOQ (Java Object Oriented Querying) genera codice Java dallo schema del database, trasformando i nomi di tabelle e colonne in costanti Java type-safe. Il DSL fluente rispecchia la sintassi SQL così le query sono leggibili e componibili. Tutti i parametri sono legati automaticamente, eliminando il rischio di SQL injection. A differenza di JPA/JPQL, jOOQ abbraccia pienamente SQL — funzioni finestra, CTE, clausole RETURNING ed estensioni specifiche del vendor sono tutte di prima classe.

Condividi 𝕏 🦋 in