جاكرتا بيرسيستنس

Jakarta Persistence ، والمعروفة أيضًا باسم JPA (اختصارًا للاسم السابق Java Persistence API ) هي مواصفات واجهة برمجة تطبيقات Jakarta EE التي تصف إدارة البيانات العلائقية في تطبيقات Java المؤسسية.

يشمل مفهوم المثابرة في هذا السياق ثلاثة مجالات:

تاريخ

صدرت مواصفات JPA 1.0 نهائيًا في 11 مايو 2006 كجزء من عملية مجتمع جافا JSR 220. وصدرت مواصفات JPA 2.0 في 10 ديسمبر 2009 (تتطلب منصة Java EE 6 استخدام JPA 2.0 [ 1 ] ). وصدرت مواصفات JPA 2.1 في 22 أبريل 2013 (تتطلب منصة Java EE 7 استخدام JPA 2.1 [ 2 ] ). وصدرت مواصفات JPA 2.2 في صيف 2017. وكان EclipseLink هو التطبيق المرجعي لـ JPA 1 و2 .

تم إصدار Jakarta Persistence 3.1 في ربيع عام 2022 كجزء من Jakarta EE 10. [ 3 ] تم إصدار Jakarta Persistence 3.2 في ربيع عام 2024، بهدف تضمينها في Jakarta EE 11. [ 4 ] EclipseLink و Hibernate هما تطبيقان متوافقان.

الكيانات

الكيان المُستدام هو فئة جافا خفيفة الوزن ، تُخزَّن حالته عادةً في جدول ضمن قاعدة بيانات علائقية . تُقابل كل نسخة من هذا الكيان صفوفًا فردية في الجدول. ترتبط الكيانات عادةً بكيانات أخرى، وتُعبَّر هذه العلاقات من خلال بيانات تعريف ربط الكائنات العلائقية (ORM). يمكن تحديد بيانات التعريف هذه مباشرةً في ملف فئة الكيان باستخدام التعليقات التوضيحية، أو في ملف وصف XML منفصل يُوزَّع مع التطبيق.

مثال

مثال على فئة كيان مع بيانات تعريف ORM معلنة باستخدام التعليقات التوضيحية (تم حذف عبارات الاستيراد و setters/getters للتبسيط).

@Entity public class Person { @Id private long id ; private String firstName ; private String lastName ; private int age ; }

يُشير التعليق @Entityالتوضيحي إلى أن الفئة تُمثل كيانًا. @Idويُحدد السمة التي تعمل كمفتاح أساسي لهذا الكيان. يُمكن استخدام تعليقات توضيحية إضافية لتحديد بيانات وصفية إضافية (على سبيل المثال، تغيير اسم الجدول الافتراضي في @Tableالتعليق التوضيحي)، أو لإنشاء علاقات بين الكيانات.

لغة الاستعلام

تُستخدم لغة استعلام جاكرتا للاستمرارية (JPQL؛ المعروفة سابقًا باسم لغة استعلام جافا للاستمرارية) لإجراء استعلامات على الكيانات المخزنة في قاعدة بيانات علائقية. تشبه هذه الاستعلامات استعلامات SQL في تركيبها، ولكنها تعمل على كائنات الكيانات بدلاً من التعامل مباشرةً مع جداول قاعدة البيانات.

تحفيز

قبل إصدار مواصفات EJB 3.0، كان العديد من مطوري تطبيقات جافا للمؤسسات يستخدمون كائنات ثابتة خفيفة الوزن، مُقدمة إما من أطر عمل الثبات (مثل Hibernate ) أو كائنات الوصول إلى البيانات (DAO)، بدلاً من استخدام مكونات الكيانات (Entity Beans ) . يعود ذلك إلى أن مكونات الكيانات، في مواصفات EJB السابقة، كانت تتطلب شيفرة معقدة وتستهلك موارد النظام بشكل كبير، كما أنها كانت مقتصرة على خوادم تطبيقات Java EE نظرًا للترابطات والتبعيات في الشيفرة المصدرية بين مكونات الكيانات وكائنات DAO أو أطر عمل الثبات. لذا، تم دمج العديد من الميزات التي كانت تُقدم في الأصل في أطر عمل الثبات الخارجية في واجهة برمجة تطبيقات جافا للثبات (Java Persistence API)، وأصبحت مشاريع مثل Hibernate و TopLink Essentials تطبيقات لمواصفات واجهة برمجة تطبيقات جافا للثبات.

Enterprise Beans

تضمنت مواصفات EJB 3.0 (التي تُعد جزءًا من منصة Java EE 5) تعريفًا لواجهة برمجة تطبيقات Java Persistence API. مع ذلك، لا يحتاج المطورون إلى حاوية EJB أو خادم تطبيقات Java EE لتشغيل التطبيقات التي تستخدم واجهة برمجة تطبيقات Java Persistence API هذه. [ 5 ] سيتم تعريف الإصدارات المستقبلية من واجهة برمجة تطبيقات Java Persistence API في مواصفات JSR منفصلة ، ​​بدلًا من تعريفها في مواصفات/مواصفات EJB JSR.

تستبدل واجهة برمجة تطبيقات Java Persistence حل الثبات الخاص بـ EJB 2.0 CMP (الثبات المُدار بواسطة الحاوية).

واجهة برمجة تطبيقات كائنات بيانات جافا

تم تطوير واجهة برمجة تطبيقات Java Persistence API جزئيًا لتوحيد واجهة برمجة تطبيقات Java Data Objects API وواجهة برمجة تطبيقات EJB 2.0 Container Managed Persistence API. تدعم معظم المنتجات التي تدعم كلتا واجهتي برمجة التطبيقات واجهة برمجة تطبيقات Java Persistence API.

تُحدد واجهة برمجة تطبيقات Java Persistence API (JPA) خاصية استمرارية البيانات لأنظمة إدارة قواعد البيانات العلائقية فقط ، وذلك بالتركيز على ربط الكائنات بالعلاقات (ORM). يدعم بعض مزودي JPA نماذج قواعد بيانات أخرى ، إلا أن ذلك يقع خارج نطاق تصميم JPA. ينص قسم المقدمة في مواصفات JPA على ما يلي: "الهدف التقني من هذا العمل هو توفير آلية لربط الكائنات بالعلاقات لمطوري تطبيقات Java الذين يستخدمون نموذج مجال Java لإدارة قاعدة بيانات علائقية." [ 6 ]

تدعم مواصفات كائنات بيانات جافا ORM بالإضافة إلى استمرارية البيانات في أنواع أخرى من نماذج قواعد البيانات، على سبيل المثال قواعد بيانات الملفات المسطحة وقواعد بيانات NoSQL ، بما في ذلك قواعد بيانات المستندات وقواعد بيانات الرسوم البيانية والعديد من مخازن البيانات الأخرى.

السبات

يوفر Hibernate، الذي أسسه جافين كينج، إطار عمل مفتوح المصدر لربط الكائنات العلائقية بلغة جافا . وتُقدم الإصدارات 3.2 وما بعدها تطبيقًا لواجهة برمجة تطبيقات استمرارية جافا (JAPI). [ 7 ] [ 8 ] مثّل كينج شركة JBoss في JSR 220، [ 9 ] وهي مجموعة خبراء JCP المكلفة بتطوير JPA. وقد أدى ذلك إلى جدل وتكهنات مستمرة حول العلاقة بين JPA وHibernate. وذكرت شركة Sun Microsystems [ 10 ] أن الأفكار استُمدت من عدة أطر عمل، بما في ذلك Hibernate و Java Data Objects .

Spring Data JPA

يُعد Spring Data JPA تطبيقًا لتجريد المستودع، وهو لبنة أساسية في تصميم التطبيقات الموجهة بالمجال، والمبني على إطار عمل تطبيقات Java المسمى Spring . يدعم هذا التطبيق جميع تطبيقات JPA المتاحة بشفافية، كما يدعم عمليات CRUD ، بالإضافة إلى تنفيذ استعلامات قواعد البيانات بسهولة. [ 11 ] : 47 [ 12 ]

سجل الإصدارات

JPA 2.0

بدأ تطوير نسخة جديدة من JPA 2.0 في يوليو 2007 ضمن عملية مجتمع جافا تحت مسمى JSR 317. وتمت الموافقة على JPA 2.0 كنسخة نهائية في 10 ديسمبر 2009. وكان تركيز JPA 2.0 على معالجة الميزات الموجودة في بعض موردي ORM المشهورين والتي لم تحصل على موافقة بالإجماع في JPA 1.0.

تضمنت الميزات الرئيسية ما يلي:

  • وظائف موسعة لربط الكائنات العلائقية
    • دعم مجموعات الكائنات المضمنة، المرتبطة في ORM بعلاقة متعددة إلى واحد
    • قوائم مرتبة
    • مجموعات من أنواع الوصول
  • واجهة برمجة تطبيقات للاستعلام عن المعايير
  • توحيد تلميحات SQL
  • توحيد البيانات الوصفية الإضافية لدعم إنشاء لغة تعريف البيانات (DDL).
  • دعم التحقق
  • دعم ذاكرة التخزين المؤقت للكائنات المشتركة.

الموردون الذين يدعمون JPA 2.0:

JPA 2.1

بدأ تطوير JPA الإصدار 2.1 في يوليو 2011 كـ JSR 338. تمت الموافقة على JPA 2.1 كإصدار نهائي في 22 مايو 2013.

تضمنت الميزات الرئيسية ما يلي:

  • المحولات، التي تسمح بتحويلات التعليمات البرمجية المخصصة بين أنواع قواعد البيانات وأنواع الكائنات
  • تحديث/حذف المعايير للسماح بالتحديثات والحذف الجماعي عبر واجهة برمجة تطبيقات المعايير (Criteria API).
  • مخططات الكيانات لجلب أو دمج الكائنات بشكل جزئي أو محدد.
  • تحسينات JPQL/Criteria مثل الاستعلامات الفرعية الحسابية، ووظائف قاعدة البيانات العامة، وعبارة الربط ON، وخيار TREAT.
  • توليد المخطط
  • دعم الإجراءات المخزنة

الموردون الذين يدعمون JPA 2.1:

JPA 2.2

بدأ تطوير JPA 2.2، وهو إصدار للصيانة، في عام 2017 بموجب JSR 338. تمت الموافقة على مراجعة الصيانة في 19 يونيو 2017.

تضمنت الميزات الرئيسية ما يلي:

  • إضافة @Repeatable إلى جميع التعليقات التوضيحية ذات الصلة
  • دعم استخدام تعليقات JPA في التعليقات الوصفية
  • بث نتائج الاستعلام
  • إمكانية حقن محولات السمات في CDI
  • دعم أنواع التاريخ والوقت في Java 8

الموردون الذين يدعمون JPA 2.2:

جاكرتا بيرسيستنس 3.0

تمت إعادة تسمية JPA إلى Jakarta Persistence في عام 2019 وتم إصدار الإصدار 3.0 في عام 2020. وشمل ذلك إعادة تسمية الحزم والخصائص من javax.persistence إلى jakarta.persistence.

البائعون الداعمون لـ Jakarta Persistence 3.0:

جاكرتا بيرسيستنس 3.1

صدرت النسخة 3.1 في عام 2022. [ 3 ] وهي جزء من Jakarta EE 10، وبالتالي تتطلب Java 11 على الأقل لتشغيلها. تُضيف هذه النسخة تحسينات على معالجة UUID، ووظائف JPQL جديدة متنوعة لمعالجة العمليات الحسابية والتاريخ/الوقت، بالإضافة إلى تغييرات طفيفة أخرى. [ 15 ]

البائعون الداعمون لـ Jakarta Persistence 3.1:

جاكرتا بيرسيستنس 3.2

صدرت النسخة 3.2 في عام 2024. [ 4 ] وقد أدخلت عددًا كبيرًا من التحسينات على واجهة برمجة التطبيقات (API) بالإضافة إلى بعض التحسينات على لغة الاستعلام. [ 18 ] [ 19 ]

البائعون الداعمون لـ Jakarta Persistence 3.2:

انظر أيضاً

مراجع

  1. "برنامج تعليمي لـ JavaEE 6" . أوراكل.
  2. "برنامج تعليمي لـ JavaEE 7" . أوراكل.
  3. 1 2 "جاكرتا بيرسيستنس 3.1" . jakarta.ee . تم الاطلاع عليه بتاريخ 27-07-2022 .
  4. 1 2 "جاكرتا بيرسيستنس 3.2" . jakarta.ee . تم الاطلاع عليه بتاريخ 27-05-2025 .
  5. مدير كيانات Hibernate: بيئات Java SE مدير كيانات Hibernate: الحصول على مدير كيانات في بيئة Java SE
  6. "جاكرتا بيرسيستنس" . jakarta.ee . تم الاطلاع عليه بتاريخ 2021-10-05 .
  7. "hibernate.org - استمرارية جافا مع Hibernate" . JBoss . تم الاطلاع عليه بتاريخ 17-11-2008 . يُنفذ Hibernate واجهة برمجة تطبيقات جافا لإدارة استمرارية الكائنات/العلاقات (javaAPI) وواجهات إدارة الاستمرارية.
  8. استمرارية البيانات في جافا باستخدام هايبرنيت . منشورات مانينغ. 8 نوفمبر 2015. ISBN 9781617290459تم الاطلاع عليه بتاريخ 8 ديسمبر 2013. غافين كينغ هو مؤسس مشروع هايبرنيت .
  9. "JBoss.com - الريادة في الصناعة" . JBoss . تم الاطلاع عليه بتاريخ 17 نوفمبر 2008. JSR 220، لجنة مواصفات EJB 3.0، جافين كينج، بيل بيرك، مارك فلوري
  10. "أسئلة وأجوبة حول واجهة برمجة تطبيقات Java Persistence" . شركة صن مايكروسيستمز. مؤرشفة من الأصل بتاريخ 22 أغسطس 2008. تم الاطلاع عليها بتاريخ 1 يوليو 2010. تستند واجهة برمجة تطبيقات Java Persistence إلى أفضل الأفكار من تقنيات التخزين الدائم مثل Hibernate وTopLink وJDO .
  11. دينوم وآخرون 2014 .
  12. "بيانات الربيع - موقع المشروع" . بيفوتال . تم الاطلاع عليه بتاريخ 26-02-2018 .
  13. "حزمة ميزات IBM WebSphere Application Server V7 لتطبيقات OSGi وواجهة برمجة تطبيقات Java Persistence" . موقع التنزيل . IBM. 27 أبريل 2010. تاريخ الاطلاع: 8 ديسمبر 2013 .
  14. "تنزيل Versant JPA بخطوتين" . موقع التنزيل . Actian . مؤرشف من الأصل بتاريخ 8 ديسمبر 2013. تم الاطلاع عليه بتاريخ 8 ديسمبر 2013 .
  15. "ما الجديد في جاكرتا بيرسيستنس 3.1" . مؤسسة إكليبس.
  16. "نتائج اختبار TCK من EclipseLink" . مؤسسة Eclipse . تم الاطلاع عليه بتاريخ 27-07-2022 .
  17. "سلسلة Hibernate ORM 6.0" . hibernate.org . تم الاطلاع عليه بتاريخ 27-07-2022 .
  18. "ملخص جاكرتا بيرسيستنس 3.2" . هايبرنيت. أبريل 2024.
  19. 1 2 3 "جاكرتا بيرسيستنس 3.2" . مؤسسة إكليبس.

للمزيد من القراءة

  • دينوم، مارتن؛ روبيو، دانيال؛ لونغ، جوش؛ ماك، غاري (1 سبتمبر 2014). وصفات الربيع: منهج حل المشكلات (  الطبعة الثانية). أبريس . ISBN 978-1-4302-2499-0.

معلومات عامة

دروس تعليمية