Enterprise Intermedio

Reemplaza el SQL basado en cadenas de JDBC crudo por el DSL SQL con seguridad de tipos y fluido de 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);
¿Ves un problema con este código? Cuéntanos.
🔒

Columnas con seguridad de tipos

Los nombres de columnas son constantes Java generadas — errores tipográficos y tipos incompatibles se convierten en errores de compilación en lugar de fallos en tiempo de ejecución.

📖

Fluidez SQL

El DSL de jOOQ refleja la sintaxis SQL de cerca, por lo que JOINs complejos, subconsultas y CTEs siguen siendo legibles.

🛡️

Libre de inyección por diseño

Los parámetros siempre se vinculan de forma segura — sin concatenación de cadenas significa sin riesgo de inyección SQL.

Enfoque Antiguo
JDBC crudo
Enfoque Moderno
DSL SQL de jOOQ
Desde JDK
11
Dificultad
Intermedio
JDBC versus jOOQ
Disponible

La edición open-source de jOOQ soporta todas las bases de datos open-source principales; las bases de datos comerciales antiguas requieren una licencia de pago

jOOQ (Java Object Oriented Querying) genera código Java a partir del esquema de tu base de datos, convirtiendo los nombres de tablas y columnas en constantes Java con seguridad de tipos. El DSL fluido refleja la sintaxis SQL para que las consultas sean legibles y componibles. Todos los parámetros se vinculan automáticamente, eliminando el riesgo de inyección SQL. A diferencia de JPA/JPQL, jOOQ abraza SQL completamente — funciones de ventana, CTEs, cláusulas RETURNING y extensiones específicas del proveedor son de primera clase.

Compartir 𝕏 🦋 in