Enterprise متوسط

استبدل SQL المبني على سلاسل JDBC الخام بـ jOOQ DSL السائل الآمن من حيث النوع.

✕ 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);
هل ترى مشكلة في هذا الكود؟ أخبرنا.
🔒

أعمدة آمنة من حيث النوع

أسماء الأعمدة ثوابت Java مُولَّدة — تصبح الأخطاء المطبعية وعدم تطابق الأنواع أخطاء مترجم بدلاً من فشل وقت التشغيل.

📖

إتقان SQL

jOOQ DSL يعكس بناء SQL عن كثب فتبقى JOINs المعقدة والاستعلامات الفرعية و CTEs مقروءة.

🛡️

محمي من الحقن بتصميمه

المعاملات دائماً مرتبطة بأمان — لا تسلسل سلاسل يعني لا خطر حقن SQL.

الأسلوب القديم
JDBC الخام
الأسلوب الحديث
jOOQ SQL DSL
منذ JDK
11
الصعوبة
متوسط
JDBC مقابل jOOQ
متاح

إصدار jOOQ مفتوح المصدر يدعم جميع قواعد البيانات مفتوحة المصدر الرئيسية؛ قواعد البيانات التجارية الأقدم تتطلب ترخيصاً مدفوعاً

يولّد jOOQ (الاستعلام الكائني التوجّه في Java) كود Java من مخطط قاعدة بياناتك محوّلاً أسماء الجداول والأعمدة إلى ثوابت Java آمنة من حيث النوع. DSL السائل يعكس بناء SQL ليكون الاستعلامات مقروءة وقابلة للتركيب. جميع المعاملات مرتبطة تلقائياً مما يُزيل خطر حقن SQL. بخلاف JPA/JPQL يحتضن jOOQ SQL بالكامل.

مشاركة 𝕏 🦋 in