JDBC ile JPA Karşılaştırması
Ayrıntılı JDBC şablon kodunu JPA'nın nesne-ilişkisel eşleme ve EntityManager'ı ile değiştirin.
Kod Karşılaştırması
✕ Java EE
String sql = "SELECT * FROM users WHERE id = ?";
try (Connection con = dataSource.getConnection();
PreparedStatement ps =
con.prepareStatement(sql)) {
ps.setLong(1, id);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
User u = new User();
u.setId(rs.getLong("id"));
u.setName(rs.getString("name"));
}
}
✓ Jakarta EE 8+
@PersistenceContext
EntityManager em;
public User findUser(Long id) {
return em.find(User.class, id);
}
public List<User> findByName(String name) {
return em.createQuery(
"SELECT u FROM User u WHERE u.name = :name",
User.class)
.setParameter("name", name)
.getResultList();
}
Bu kodda bir sorun mu gördünüz? Bize bildirin.
Modern yöntem neden daha iyi
Nesne eşleme
Entity'ler düz açıklamalı sınıflardır — manuel ResultSet'ten nesneye çeviri yok.
Tür-güvenli sorgular
JPQL, ham tablo ve sütun dizeleri yerine entity türleri ve alanlar üzerinde çalışır.
Yerleşik önbellekleme
Birinci ve ikinci düzey önbellekler, veritabanı gidiş-dönüşlerini otomatik olarak azaltır.
Eski Yaklaşım
JDBC
Modern Yaklaşım
JPA EntityManager
JDK'dan itibaren
11
Zorluk
Orta
JDK Desteği
JDBC ile JPA Karşılaştırması
Mevcut
Jakarta EE 8 / Java 11'den itibaren geniş çapta kullanılabilir
Nasıl çalışır
JPA (Jakarta Persistence API), Java nesnelerini veritabanı satırlarına eşler; manuel ResultSet işleme ve SQL dize birleştirmeyi ortadan kaldırır. EntityManager, find(), persist() ve JPQL sorguları sağlar; böylece ham SQL yerine etki alanı nesneleriyle çalışırsınız; kapsayıcı ise bağlantı havuzlama ve işlemleri yönetir.
İlgili Belgeler