Enterprise Fortgeschritten

Ersetze stringbasiertes SQL mit rohem JDBC durch das typsichere, fließende SQL-DSL von 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);
Problem mit diesem Code entdeckt? Sag uns Bescheid.
🔒

Typsichere Spalten

Spaltennamen sind generierte Java-Konstanten — Tippfehler und Typfehler werden zu Kompilierfehlern statt Laufzeitfehlern.

📖

SQL-Flüssigkeit

Das jOOQ-DSL spiegelt die SQL-Syntax eng wider, sodass komplexe JOINs, Unterabfragen und CTEs lesbar bleiben.

🛡️

Injektionssicher per Design

Parameter werden immer sicher gebunden — keine Stringverkettung bedeutet kein SQL-Injection-Risiko.

Alter Ansatz
Rohes JDBC
Moderner Ansatz
jOOQ SQL DSL
Seit JDK
11
Schwierigkeitsgrad
Fortgeschritten
JDBC versus jOOQ
Verfügbar

Die Open-Source-Edition von jOOQ unterstützt alle gängigen Open-Source-Datenbanken; ältere kommerzielle Datenbanken erfordern eine kostenpflichtige Lizenz

jOOQ (Java Object Oriented Querying) generiert Java-Code aus dem Datenbankschema und wandelt Tabellen- und Spaltennamen in typsichere Java-Konstanten um. Das fließende DSL spiegelt die SQL-Syntax wider, sodass Abfragen lesbar und kombinierbar sind. Alle Parameter werden automatisch gebunden, was SQL-Injection-Risiken eliminiert. Anders als JPA/JPQL unterstützt jOOQ SQL vollständig — Fensterfunktionen, CTEs, RETURNING-Klauseln und anbieterspezifische Erweiterungen sind erstklassig.

Teilen 𝕏 🦋 in