مقدمة
في تطوير Javaweb ، فإن أكثرها كلاسيكيًا هي مجموعة إطار عمل SSH ومجموعة SSM Framework. الآن العديد من شركات تكنولوجيا المعلومات على استعداد لاستخدام SSM. بالنسبة إلى H و M هنا ، السبات و Mybatis ، دعني أتحدث لفترة وجيزة عن ذلك اليوم.
لعب الفأس في الباب
خلال الفصل ، غالبًا ما أخبر الطلاب أنه يجب عليك فهم أي تقنية:
شرح المعرفة
Hibernate و MyBatis كلاهما شائعان للغاية في رسم الخرائط العليا للعلاقات العامة ، لوضعها بصراحة ، وهي تقنية تُخطط لقواعد البيانات) أطر طبقة الثبات. في جوهرها ، لا يزال JDBC مغلفة لتسهيل استخدامنا وتبسيط تطورنا. دعنا نتعرف على بعض القضايا أولاً:
لماذا يمكن أن يحل إدخال طبقة الثبات هذه المشكلة؟ التحليل: يمكن إدخال آلية في طبقة الثبات ، والتي يمكن استخدامها كترجمة. بالنسبة لقواعد البيانات المختلفة في الأسفل ، تتم ترجمة عبارات HQL وبيانات الاستعلام الديناميكية إلى عبارات SQL مختلفة. هذا يحل المشكلة التي لا توجد حاجة لتغيير عبارات SQL بعد استبدال قاعدة البيانات ، وسيتم تقليل مقدار الكود إلى حد كبير.
إنه أمر جيد للغاية ، فكيف قام الإسبات و MyBatis بتطبيق الحل أعلاه ، أي كيف تم تنفيذ ORM؟
السبات
في السبات ، هذه الآلية هي ملف تكوين hibernate.cfg.xml (وضعت في دليل SRC)
<Hibernate-Configuration> <session-factory> <property name = "connection.url"> jdbc: mysql: // localhost/hibernate </propect <property name = "dialect"> org.hibernate.dialect.mysqldialect </property> <!-DDL عبارة تلقائيًا إنشاء الجداول-> <property name = "hbm2ddl.auto"> none </property> <property name = "show_sql" name = "hibernate.connection.provider_class"> org.hibernate.service.jdbc.connections.internal.c3p0connectionprovider </property> <!- الحد الأدنى لعدد اتصالات JDBC في مجموعة الاتصال. الافتراضيات Hibernate إلى 1-> <property name = "hibernate.c3p0.min_size"> 5 </property> <!-الحد الأقصى لعدد اتصالات JDBC في مجموعة الاتصال. الافتراضيات Hibernate إلى 100-> <property name = "hibernate.c3p0.max_size"> 20 </property> <!-عند إزالة اتصال الخمول في ثوانٍ من تجمع الاتصال. الافتراضي هو 0 ، لا تنتهي أبدًا-> <property name = "hibernate.c3p0.timeout"> 300 </property> <!-عدد البيانات المسبقة المخبأة. تستخدم لتحسين الأداء. الافتراضيات Hibernate إلى 0 ، لا تتوفر ذاكرة التخزين المؤقت-> <property name = "hibernate.c3p0.max_statements"> 100 </property> <!-وقت الخمول (بالثواني) قبل التحقق تلقائيًا من الاتصال. الافتراضيات hibernate إلى 0-> <property name = "hibernate.c3p0.idle_test_period"> 3000 </property> <!-التشغيل بشكل مستقل. إذا حصلت على الجلسة من خلال getCurrentsession () ، فأنت بحاجة إلى تعيينها على النحو التالي-> <property name = "current_session_context_class"> موضوع </property> <!-طريقتان لتعيين فصول ثابتة-> <mapping/> mapping = "com/serup/model.hbm.xml"
بمجرد تغيير المشروع قاعدة البيانات ، ما يجب تعديله هو مجرد عدة سمات في هذا الملف ، ولا يلزم تعديل رمز المنطق لطبقة العمل.
يوصى باستخدام السبات من أجل التطوير:
** كائن المجال ---> رسم الخرائط ---> قاعدة بيانات بعبارة أخرى ، تحتاج الكائنات والجداول إلى الحصول على رسم الخرائط ، وهذا التعيين له طريقتان تكوين في Hibernate **
1. طريقة XML (اسم الفئة. hbm.xml)
إنشاء علاقة رسم الخرائط بين الجدول والفئة من خلال ملف HBM
2. طريقة التعليق
في وقت لاحق ، مع الهندسة العكسية ، أصبح الأمر أكثر بساطة ، ويمكنك إنشاء الملف المقابل مباشرة من خلال جدول قاعدة البيانات.
mybatis
في MyBatis ، تعتمد هذه الآلية أيضًا على ملف التكوين mybatis-config.xml (وضعت في دليل SRC)
<IGNOMURE> <properties Resource = "sqlserverInfo.properties"/> <!-ملف التكوين لقاعدة البيانات-> <TypeAliases> <package name = "com.demo.domain"/> <! type = "jdbc"/> <dataSource type = "prouded"> <property name = "driver" value = "$ {driver}"/> <property name = "url" value = "$ {url}"/> <property name = "username" value = "$ {username}"/> <property name = "value" </eversionments> <mappers> <!-ملفات التعيين لإكمال عمليات crud محددة-> <mapper resource = "com/demo/domain/usermapper.xml"/> </nysbers> </ispification> وبهذه الطريقة ، في كل مرة تقوم فيها بتغيير قاعدة البيانات ، تحتاج فقط إلى تعديل ملف التكوين.
باستخدام MyBatis للتنمية يوصي هذا:
** قم بإنشاء قاعدة بيانات وإنشاء جداول مختلفة ---> الهندسة العكسية تقوم تلقائيًا بإنشاء الكود المطلوب لتنفيذ myBatis (mapper.java ، mapper.xml ، po ..) ---> اكتب طبقة التحكم وطبقة الخدمة وفقًا لمنطق العمل. **
الاختلافات
هناك مقارنات مختلفة على الإنترنت ، وأنا أتحدث فقط عن بعض النقاط المختلفة التي أعتقدها
1. السبات لديه لغة استعلام موجهة نحو الكائن تسمى HQL. هذا قوي جدا. يسمح للقردة الذين لا يعرفون عبارات SQL بإضافة قاعدة البيانات وحذفها وتعديلها والبحث عنها ، ولكن هذا هو أيضًا ضعفه. لا يمكن تحسين عبارات SQL.
2. يتطلب MyBatis تكوين بيان SQL ، مما يعني أنه لا يزال يتطلب معرفة أساسية بقاعدة البيانات للبدء. علاوة على ذلك ، يجب أن يكون المبتدئون قد واجهوا العديد من المزالق في تعيين النتيجة.
3. لم أفعل مشروعًا كبيرًا بشكل خاص. إذا لم تكن هناك متطلبات أداء خاصة ، فلا يزال السبات أسهل في تنفيذ الوظائف.
ضبط النظام
حل ضبط السبات
حل ضبط MyBatis
لخص
ما سبق هو المحتوى الكامل لهذه المقالة. آمل أن يكون لمحتوى هذه المقالة قيمة مرجعية معينة لدراسة أو عمل الجميع. إذا كان لديك أي أسئلة ، فيمكنك ترك رسالة للتواصل. شكرا لك على دعمك إلى wulin.com.