مقدمة في Hibernate: ما هو ولماذا تحتاجه
\n\nHibernate هي مكتبة قوية وعالية الأداء للربط الكائني-العلائقي (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
Hibernate هو المعيار الفعلي للعمل مع قواعد البيانات العلائقية في نظام جافا البيئي. يُستخدم في عدد هائل من المشاريع - من تطبيقات الويب الصغيرة إلى أنظمة المؤسسات على مستوى Enterprise.
\n\nتثبيت Hibernate
\n\nعلى عكس Python أو JavaScript، لا يوجد في جافا مدير حزم واحد مثل pip أو npm. يتم ربط Hibernate بالمشروع من خلال نظام بناء مثل Maven أو Gradle. فيما يلي أمثلة لكلتا الأداتين.
التثبيت عبر Maven (موصى به)
\nأضف التبعيات التالية إلى ملف pom.xml الخاص بمشروعك. سنستخدم Hibernate 6.x (الإصدار الحالي وقت الكتابة) ومشغل لـ PostgreSQL (يمكنك استبداله بـ MySQL أو H2 أو غيره).
<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:
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 (المضمنة) للبساطة، لتجنب إعداد خادم خارجي.
الخطوة 1: ملف التكوين hibernate.cfg.xml
\nأنشئ في المجلد src/main/resources/