Enterprise Orta

JDBC ile jOOQ Karşılaştırması

Ham JDBC dize tabanlı SQL'i jOOQ'nun tür-güvenli, akıcı SQL DSL'i ile değiştirin.

✕ 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);
Bu kodda bir sorun mu gördünüz? Bize bildirin.
🔒

Tür-güvenli sütunlar

Sütun adları üretilmiş Java sabitleridir — yazım hataları ve tür uyumsuzlukları çalışma zamanı hataları yerine derleyici hatalarına dönüşür.

📖

SQL akıcılığı

jOOQ DSL, SQL söz dizimini yakından yansıtır; karmaşık JOIN'ler, alt sorgular ve CTE'ler okunabilir kalır.

🛡️

Tasarım gereği enjeksiyonsuz

Parametreler her zaman güvenli şekilde bağlanır — dize birleştirme olmadığından SQL enjeksiyonu riski yoktur.

Eski Yaklaşım
Ham JDBC
Modern Yaklaşım
jOOQ SQL DSL
JDK'dan itibaren
11
Zorluk
Orta
JDBC ile jOOQ Karşılaştırması
Mevcut

jOOQ açık kaynak sürümü tüm büyük açık kaynak veritabanlarını destekler; eski ticari veritabanlar ücretli lisans gerektirir

jOOQ (Java Object Oriented Querying), veritabanı şemanızdan Java kodu üretir; tablo ve sütun adlarını tür-güvenli Java sabitlerına dönüştürür. Akıcı DSL, SQL söz dizimini yansıtır; böylece sorgular okunabilir ve birleştirilebilir olur. Tüm parametreler otomatik olarak bağlanır ve SQL enjeksiyonu riski ortadan kalkar. JPA/JPQL'den farklı olarak jOOQ, SQL'i tam anlamıyla benimser — pencere fonksiyonları, CTE'ler, RETURNING cümleleri ve satıcıya özgü uzantılar birinci sınıf desteklenir.

Paylaş 𝕏 🦋 in