استبدل كليشيهات JDBC المطوّلة بتعيين JPA الكائني-العلائقي و EntityManager.
مقارنة الكود
✕ 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();
}
هل ترى مشكلة في هذا الكود؟ أخبرنا.
لماذا يتفوق الأسلوب الحديث
تعيين الكائنات
الكيانات فئات Java عادية مزوّدة بتعليقات توضيحية — لا ترجمة ResultSet-إلى-كائن يدوية.
استعلامات آمنة من حيث النوع
JPQL يعمل على أنواع الكيانات وحقولها بدلاً من سلاسل الجدول والعمود الخام.
تخزين مؤقت مدمج
تخفّض ذاكرات التخزين المؤقت من المستوى الأول والثاني رحلات قاعدة البيانات تلقائياً.
الأسلوب القديم
JDBC
الأسلوب الحديث
JPA EntityManager
منذ JDK
11
الصعوبة
متوسط
دعم JDK
JDBC مقابل JPA
متاح
متاح على نطاق واسع منذ Jakarta EE 8 / Java 11
كيف يعمل
يُعيّن JPA (Jakarta Persistence API) كائنات Java إلى صفوف قاعدة البيانات مما يُزيل معالجة ResultSet اليدوية وتسلسل سلاسل SQL. يوفر EntityManager find() و persist() واستعلامات JPQL كي تعمل مع كائنات المجال بدلاً من SQL الخام بينما تدير الحاوية تجميع الاتصالات والمعاملات.
توثيق ذو صلة