استبدل SQL المبني على سلاسل JDBC الخام بـ jOOQ DSL السائل الآمن من حيث النوع.
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;
}
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.
إصدار jOOQ مفتوح المصدر يدعم جميع قواعد البيانات مفتوحة المصدر الرئيسية؛ قواعد البيانات التجارية الأقدم تتطلب ترخيصاً مدفوعاً
يولّد jOOQ (الاستعلام الكائني التوجّه في Java) كود Java من مخطط قاعدة بياناتك محوّلاً أسماء الجداول والأعمدة إلى ثوابت Java آمنة من حيث النوع. DSL السائل يعكس بناء SQL ليكون الاستعلامات مقروءة وقابلة للتركيب. جميع المعاملات مرتبطة تلقائياً مما يُزيل خطر حقن SQL. بخلاف JPA/JPQL يحتضن jOOQ SQL بالكامل.