ما هو مزود EJB 3 المستمر الذي يجب أن أستخدمه؟

StackOverflow https://stackoverflow.com/questions/98045

  •  01-07-2019
  •  | 
  •  

سؤال

أنا أستخدم EJB 3 في مشروع J2EE كبير إلى حد ما، افتراضيًا مع Netbeans يقوم بتعيين الموفر المستمر لوحدات الكيان على TopLink.هناك خيار لتغيير الموفر إلى واحد مما يلي أو حتى إضافة مكتبة استمرارية جديدة:

  • بيات شتوى
  • كودو
  • OpenJPA

ما هو مزود الثبات الذي تفضل استخدامه؟ما هي فوائد استخدام مزود آخر؟

على الرغم من أن TopLink يبدو جيدًا، إلا أنه لا يمكنني العثور على الكثير من الوثائق الجيدة حول كيفية التحكم في التخزين المؤقت وما إلى ذلك.أي مساعدة سيكون محل تقدير كبير.

هل كانت مفيدة؟

المحلول

لا يوجد سوى اثنين من موفري JPA الذين أفكر في استخدامهم:

إذا كنت تريد الالتزام بـ JPA القياسي فسأستخدم EclipseLink.في حين أن Toplink Essentials هو التطبيق المرجعي لـ JPA 1.0، فقد ورث EclipseLink أساسًا رمز TopLink Essentials وسيكون التطبيق المرجعي لـ JPA 2.0 (ومرفقًا مع Glassfish V3 عند شحنه؛المتوقع حول JavaOne في مايو 2009).كان TopLink Essentials عبارة عن نسخة معطلة إلى حد ما من منتج TopLink التجاري من Oracle، لكن EclipseLink يحتوي بشكل أساسي على جميع الميزات التي يتمتع بها TopLink.

من الواضح أن الخيار الآخر هو السبات.إنه مستخدم وناضج على نطاق واسع ولكنه ليس خاليًا مما رأيته.على سبيل المثال، آخر مرة بحثت فيها، يواجه Hibernate مشكلات مع كيان لديه علاقات متعددة ومتحمسة بين شخص وآخر.لا أعرف ما إذا كان Hibernate يحتوي على ما يعادل تلميح الاستعلام الدفعي الخاص بـ EclipseLink، ولكنه ميزة مفيدة بشكل لا يصدق للتعامل مع هذا النوع من المشكلات.

السبات بالطبع يدعم أيضًا JPA القياسي.أكبر ميزة لـ Hibernate هي أنه إذا كان لديك سؤال حول كيفية عمله، فمن المرجح أن يجد لك بحث Google إجابة.

أنا بصراحة لن أفكر في أي شيء آخر غير المزودين المذكورين أعلاه.

نصائح أخرى

أوصي بشدة بوضع السبات للأسباب التالية:

  • طبقة استمرارية المصدر المفتوح الأكثر استخدامًا واحترامًا في عالم Java؛مجتمع نشط ضخم والكثير من الاستخدام في التطبيقات ذات المهام الحرجة ذات الحجم الكبير.
  • لا تربط نفسك بـ J2EE أو بائع محدد على الإطلاق إذا كنت ترغب في اتباع مسار مختلف مع بقية التطبيق الخاص بك، مثل Spring، وما إلى ذلك، حيث سيظل Hibernate يلعب بشكل جيد.

لقد وجدت أن Hibernate موثق جيدًا إلى حد ما، ومدعوم جيدًا بتقنيات التخزين المؤقت المتنوعة.لقد استخدمته أيضًا أكثر قليلاً من الآخرين في سياقات غير JPA، لذلك ربما أكون متحيزًا بعض الشيء تجاهه بسبب ذلك.

لقد نجحت مشاريع الألعاب الصغيرة القليلة التي جربتها باستخدام TopLink Essentials بشكل جيد أيضًا، لكنني لم أقم مطلقًا بالتخزين المؤقت أو أي شيء قد يتطلب وثائق خاصة بالمزود.بشكل عام، أعتقد أن هناك دعمًا أقل من المجتمع لذلك، وهذا جزء من سبب استخدامي لـ Hibernate في نهاية المطاف.

أنا استخدم السبات.إنه ناضج جدًا ويعمل بشكل جيد جدًا.أنا شخصياً لم أستخدم أيًا من الخدمات الأخرى، لكنني أعلم أن Hibernate هو أحد موفري JPA الأكثر تميزًا على الإطلاق.وأيضًا نظرًا لأن الكثير من الأشخاص يستخدمونه، فكل مشكلة واجهتها معه تقريبًا، يمكنني العثور بسرعة على حل من خلال القليل من البحث على Google.

لقد عملت مؤخرًا على تطبيق مؤسسي كبير تم إنشاؤه باستخدام إطار عمل Kodo JPA.لم تكن وحدات SQL التي تنتجها Kodo قابلة للتطوير بشكل عام مع كمية كبيرة من البيانات.في رأيي أنتجت الكثير من الاستعلامات ذات الصلات الخارجية.بالنظر إلى عدد التعيينات التي كان علينا تغييرها عند محاولة توسيع نطاق كودو، لا أوصي باستخدامه لتطبيق مؤسسي كبير.حتى ممثلي Oracle الذين تحدثنا إليهم يحاولون إبعاد العملاء عن Kodo والانتقال إلى TopLink.قد تقوم Oracle بالتخلص التدريجي من كودو في المستقبل.

نواة البيانات http://www.datanucleus.org هو أيضًا مزود JPA متوافق تمامًا، مع JPA1 وبعض ميزات معاينة JPA2

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top