Hibernate لجافا: دليل شامل مع أمثلة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة في Hibernate: ما هو ولماذا تحتاجه

\n\n

Hibernate هي مكتبة قوية وعالية الأداء للربط الكائني-العلائقي (ORM - Object-Relational Mapping) للغة جافا. إنها تحل المشكلة الأساسية المعروفة باسم "عدم تطابق المعاوقة الكائنية-العلائقية": في جافا نعمل مع الكائنات والفئات، بينما في قواعد البيانات العلائقية نعمل مع الجداول والسجلات. يقوم Hibernate تلقائيًا بتحويل كائنات جافا إلى استعلامات SQL والعكس، مما يسمح للمطور بالتركيز على منطق الأعمال بدلاً من كتابة أطنان من كود JDBC المتكرر.

\n\n

الإمكانيات الرئيسية لـ Hibernate:

\n
    \n
  • أتمتة CRUD: إنشاء وقراءة وتحديث وحذف السجلات في قاعدة البيانات تتم من خلال العمل مع كائنات جافا.
  • \n
  • لغة الاستعلام HQL (Hibernate Query Language): نظير كائني التوجه لـ SQL، يعمل مع أسماء الفئات وحقولها بدلاً من الجداول والأعمدة.
  • \n
  • إدارة التخزين المؤقت: آليات تخزين مؤقت مدمجة من المستوى الأول والثاني لتحسين الأداء.
  • \n
  • التحميل البطيء (Lazy Loading): تحميل البيانات المرتبطة فقط عند استخدامها الفعلي.
  • \n
  • توليد مخطط قاعدة البيانات: إمكانية إنشاء أو تحديث الجداول في قاعدة البيانات تلقائيًا بناءً على التعليقات التوضيحية في فئات جافا.
  • \n
  • دعم المعاملات: تكامل كامل مع Java Transaction API (JTA) والمعاملات المحلية لـ JDBC.
  • \n
\n\n

Hibernate هو المعيار الفعلي للعمل مع قواعد البيانات العلائقية في نظام جافا البيئي. يُستخدم في عدد هائل من المشاريع - من تطبيقات الويب الصغيرة إلى أنظمة المؤسسات على مستوى Enterprise.

\n\n

تثبيت Hibernate

\n\n

على عكس Python أو JavaScript، لا يوجد في جافا مدير حزم واحد مثل pip أو npm. يتم ربط Hibernate بالمشروع من خلال نظام بناء مثل Maven أو Gradle. فيما يلي أمثلة لكلتا الأداتين.

\n\n

التثبيت عبر Maven (موصى به)

\n

أضف التبعيات التالية إلى ملف pom.xml الخاص بمشروعك. سنستخدم Hibernate 6.x (الإصدار الحالي وقت الكتابة) ومشغل لـ PostgreSQL (يمكنك استبداله بـ MySQL أو H2 أو غيره).

\n\n
<dependencies>\n    <!-- نواة Hibernate -->\n    <dependency>\n        <groupId>org.hibernate.orm</groupId>\n        <artifactId>hibernate-core</artifactId>\n        <version>6.3.1.Final</version>\n    </dependency>\n\n    <!-- مشغل لـ PostgreSQL -->\n    <dependency>\n        <groupId>org.postgresql</groupId>\n        <artifactId>postgresql</artifactId>\n        <version>42.7.1</version>\n    </dependency>\n\n    <!-- التسجيل (اختياري ولكنه مفيد لتصحيح الأخطاء) -->\n    <dependency>\n        <groupId>org.slf4j</groupId>\n        <artifactId>slf4j-simple</artifactId>\n        <version>2.0.9</version>\n    </dependency>\n</dependencies>
\n\n

التثبيت عبر Gradle

\n

أضف إلى ملف build.gradle:

\n\n
dependencies {\n    implementation 'org.hibernate.orm:hibernate-core:6.3.1.Final'\n    implementation 'org.postgresql:postgresql:42.7.1'\n    implementation 'org.slf4j:slf4j-simple:2.0.9'\n}
\n\n

بعد إضافة التبعيات، سيقوم بيئة التطوير المتكاملة الخاصة بك (IntelliJ IDEA، Eclipse) تلقائيًا بتحميل جميع ملفات JAR الضرورية.

\n\n

بداية سريعة مع مثال كود

\n\n

لنقم بإنشاء تطبيق بسيط يحفظ ويقرأ كائن User من قاعدة البيانات. سنستخدم قاعدة بيانات H2 (المضمنة) للبساطة، لتجنب إعداد خادم خارجي.

\n\n

الخطوة 1: ملف التكوين hibernate.cfg.xml

\n

أنشئ في المجلد src/main/resources/

توصيات