لم أستخدم MyBatis من قبل كثيرًا ، وأنا أعلم فقط أنه إطار قاعدة بيانات ORM مثل السبات. نظرًا لأن كفاءة استخدام الزيادات ، فقد وجدت أنه مختلف تمامًا عن السبات. يمكن للأصدقاء المهتمين تعلم ذلك من خلال هذا المقال.
استفادت من نهاية هذا الأسبوع ، أخذت الوقت الكافي لفرز بعض التقنيات الشائعة الاستخدام ، وسيقوم المحرر بتحديث المحتوى من وقت لآخر.
أولاً ، دعونا نقدم بإيجاز مفاهيم الاثنين:
Hibernate: Hibernate هو إطار ORM الأكثر شعبية في الوقت الحاضر ويوفر تغليف كامل نسبيا لهيكل قاعدة البيانات.
MyBatis: MyBatis هو أيضًا إطار ORM شائع جدًا ، مع التركيز الرئيسي على علاقة التعيين بين Pojo و SQL.
ثانياً ، دعنا نتحدث عن الاختلافات بين الاثنين في عدة جوانب:
1. الفرق الأكبر بين الاثنين:
بالنسبة للمنطق البسيط ، لدى Hibernate و MyBatis أدوات توليد الكود المقابلة التي يمكن أن تنشئ طرق طبقة DAO بسيطة وبسيطة.
بالنسبة للاستعلامات المتقدمة ، يتطلب MyBatis الكتابة اليدوية لبيانات SQL و ResultMap. لدى Hibernate آلية رسم خرائط جيدة ، لذلك لا يحتاج المطورون إلى الاهتمام بتوليد SQL ورسم خرائط النتائج ، ويمكنهم التركيز أكثر على العمليات التجارية.
2. مقارنة صعوبة التنمية
تطور السبات هو أكثر صعوبة من mybatis. ويرجع ذلك أساسًا إلى أن السبات معقد وكبير ، وله دورة تعليمية طويلة.
MyBatis بسيط نسبيًا ، ويعتمد MyBatis بشكل أساسي على كتابة SQL ، مما يجعل المطورين يشعرون بمزيد من الدرجة.
3. مقارنة كتابة SQL
يتم كتابة MyBatis 'SQL يدويًا ، بحيث يمكنك تحديد الحقول للاستعلام حسب الحاجة. ومع ذلك ، لا توجد إحصائيات سجل خاصة بك ، لذلك تحتاج إلى استخدام Log4J لتسجيل السجلات.
يمكن لـ Hibernate أيضًا كتابة SQL نفسها لتحديد الحقول التي يجب الاستعلام عنها ، لكن هذا يدمر بساطة تطور السبات. ومع ذلك ، فإن السبات لها إحصائيات السجل الخاصة بها.
4. مقارنة قابلية توسع قاعدة البيانات
نظرًا لأن جميع SQL مكتوبة على قاعدة البيانات ، فإن MyBatis لديه قابلية التوسع والهجرة.
العلاقة المحددة بين الإسبات وقاعدة البيانات موجودة في XML ، لذلك لا يهتم HQL بالمواصفات التي تستخدمها.
5. مقارنة آليات التخزين المؤقت
أوجه التشابه: بالإضافة إلى استخدام آلية التخزين المؤقت الافتراضية للنظام ، يمكن لذاكرة التخزين المؤقت من المستوى الثاني من السبات و MyBatis الكتابة فوق سلوك ذاكرة التخزين المؤقت تمامًا عن طريق تنفيذ ذاكرة التخزين المؤقت الخاصة بك أو إنشاء محولات لحلول ذاكرة التخزين المؤقت الأخرى الطرف الثالث.
الاختلافات: يتم تكوين تكوين ذاكرة التخزين المؤقت الثانوية الخاصة بـ Hibernate بالتفصيل في ملف التكوين الذي تم إنشاؤه بواسطة SessionFactory ، ثم يتم تكوينه في خريطة كائن الجدول المحددة التي تم تكوين ذاكرة التخزين المؤقت.
يتم تكوين تكوين ذاكرة التخزين المؤقت الثانوية لـ MyBatis بالتفصيل في كل خريطة محددة من الجدول ، بحيث يمكن تخصيص آليات ذاكرة التخزين المؤقت المختلفة لجداول مختلفة. ويمكن لـ MyBatis مشاركة نفس تكوين ذاكرة التخزين المؤقت والمثيل في مساحة الاسم ، والتي يتم تنفيذها من خلال Cache-REF.
مقارنة بين الاثنين: نظرًا لأن السبات لديه آلية إدارة جيدة لكائنات الاستعلام ، لا يحتاج المستخدمون إلى الاهتمام بـ SQL. لذلك ، إذا ظهرت البيانات القذرة عند استخدام ذاكرة التخزين المؤقت الثانوية ، فسيقوم النظام بالإبلاغ عن خطأ ومطالبة.
في هذا الصدد ، يتطلب MyBatis رعاية خاصة عند استخدام ذاكرة التخزين المؤقت L2. إذا كان لا يمكن تحديد نطاق عمليات تحديث البيانات بالكامل ، فتجنب الاستخدام العمياء للذاكرة التخزين المؤقت. خلاف ذلك ، فإن ظهور البيانات القذرة سيؤدي إلى مخاطر خفية كبيرة للتشغيل العادي للنظام.
6. ملخص:
MyBatis: صغير ، مريح ، فعال ، بسيط ، مباشر ، شبه آلي
السبات: قوي ، مريح ، فعال ، معقد ، تلقائي كامل
يمكن لكل من Hibernate و MyBatis إنشاء SessionFactory من ملف تكوين XML من خلال SessionFactoryBuider ، ثم إنشاء جلسة من SessionFactory ، وأخيراً تنفيذ المعاملات وبيانات SQL.
تتمثل ميزة MyBatis في أن MyBatis يمكنه إجراء تحسين SQL أكثر تفصيلاً ، وتقليل حقول الاستعلام ، ويكون من السهل إتقانه.
ميزة السبات هي أن تطوير طبقة DAO أبسط من MyBatis ، والذي يتطلب صيانة SQL ورسم خرائط النتائج. قابلية نقل قاعدة البيانات جيدة جدًا ، فإن قابلية نقل قاعدة بيانات MyBatis ليست جيدة ، وتحتاج قواعد البيانات المختلفة إلى كتابة SQL مختلفة. هناك آلية تخزين مؤقت أفضل من المستوى 2 ، ويمكن استخدام التخزين المؤقت لجهة خارجية. يوفر MyBatis نفسه آليات التخزين المؤقت الضعيفة.
MyBatis:
1. من السهل البدء والتعلم والاستخدام ، ويوفر وظيفة ربط الكائنات التلقائية لاستعلامات قاعدة البيانات ، وتستمر في تجربة جيدة في استخدام SQL. إنه مثالي تمامًا للمشاريع التي لا تحتوي على متطلبات نموذج الكائن العالية.
2. يمكن إجراء تحسين SQL أكثر تفصيلاً ، مما يمكن أن يقلل من حقول الاستعلام.
3. العيب هو أن الإطار لا يزال بسيطًا نسبيًا وأن الوظائف لا تزال مفقودة. على الرغم من تبسيط رمز ربط البيانات ، إلا أن استعلام قاعدة البيانات الأساسي بالكامل يجب أن يكتب في الواقع بنفسك ، إلا أن عبء العمل كبير نسبيًا ، وليس من السهل التكيف مع تعديل قاعدة البيانات السريعة.
4. آلية التخزين المؤقت الثانوية سيئة.
السبات:
1. إذا كنت بارعًا تمامًا في السبات والإسبات المغطاة بشكل صحيح ، فستكون رمز طبقة الثبات بالكامل في مشروعك بسيطًا للغاية ، ولا يوجد سوى رمز كبير جدًا للكتابة ، وسرعة التطوير سريعة جدًا ، وهي رائعة جدًا.
2. هناك آلية تخزين مؤقت ثانوية أفضل ، ويمكن استخدام التخزين المؤقت لجهة خارجية.
3. العيب هو أن عتبة التعلم ليست منخفضة ، ويجب أن تكون بارعا فيه. كيفية تصميم رسم الخرائط O/R ، وكيفية تحقيق التوازن بين الأداء ونموذج الكائن ، وكيفية استخدام السبات جيدًا ، يتطلب تجربتك وقدرتك على أن تكون قويًا.
اسمحوا لي أن أعطيك استعارة حية:
MyBatis: الأدوات الميكانيكية سهلة الاستخدام ويمكن استخدامها في أقرب وقت ممكن ، ولكن لا يزال يتعين القيام بالعمل من قبل نفسك ، ولكن الأدوات على قيد الحياة ، لذا فإن كيفية جعلها تعتمد علي.
السبات: الروبوت الذكي ، ولكن من المكلف للغاية تطويره (التعلم ، والكفاءة) ويمكن أن يتخلص منه العمل ، ولكن فقط ما يمكن أن يفعله.