إدخال بيانات الربيع MongoDB

يوم جيد للجميع!

بدأ الدفق الجديد تمامًا "Developer on the Spring Framework" ، "فجأة" ، وتبين أن هذه الدورة تحظى بشعبية كبيرة بين كل من الطلاب الجدد وأولئك الذين لم يتعلموا منا بالفعل في Java والمشاريع "العادية". لذا ، إذا كان الأمر مثيرًا للاهتمام ، فانتقل إلينا للحصول على دروس مفتوحة ، وبطبيعة الحال ، شارك المواد الشيقة حول الموضوع.

ترجمة البيانات الربيعية MongoDB
نشره أناند كومار

دعنا نذهب!

في عالم اليوم ، من المهم جدًا إنشاء التطبيق وتشغيله في أقرب وقت ممكن. أيضا ، يجب أن يكون التطبيق سهل التطوير وسهل الصيانة.

Spring هو مجرد إطار عمل يوفر سهولة التكامل مع العديد من الأطر المختلفة الأخرى ، مما يبسط تطوير التطبيقات باستخدام Spring. أحد هذه التكامل هو تكامل الربيع مع MongoDB.



1. مقدمة

في هذا الدرس ، سنناقش مزيجًا من أشهر إطار عمل جافا الربيعي وأشهر نظام إدارة قاعدة بيانات NoSQL (DBMS) MongoDB. MongoDB هو نظام إدارة قواعد البيانات NoSQL DBMS الموجه للمستندات الذي يقوم بتخزين البيانات بتنسيق يشبه JSON.
يتم توفير التكامل بين Spring Data و MongoDB بواسطة Spring لتسهيل تفاعل كل منهما وراحة المطورين ، مما يلغي الحاجة إلى كتابة العديد من الاستفسارات للإدراج والتحديث والحذف.

فيما يلي بعض الميزات التي يوفرها مشروع Spring Data MongoDB:

  1. تسمح لك Spring Data باستخدام كل من فئة التكوين وتكوين XML.
  2. يتم استخدام التسلسل الهرمي لاستثناءات الربيع للوصول إلى الاستثناء.
  3. تخطيط متكامل بين Java POJOs ووثيقة MongoDB.
  4. فئة MongoTemplate ، التي تبسط استخدام عمليات MongoDB الشائعة.
  5. بالإضافة إلى MongoTemplate ، يمكنك استخدام فئتي MongoReader و MongoWriter للعرض على مستوى منخفض.

أفضل طريقة لفهم أي تقنية هي استخدامها عمليًا ، وهذا بالضبط ما سنفعله الآن.

لنقم بإنشاء برنامج بسيط لمعرفة المزيد حول Spring Data MongoDB.

2. التقنيات والأدوات

دعونا نلقي نظرة على التقنيات والأدوات التي سنستخدمها لإنشاء البرنامج.

  1. إطلاق Eclispe Oxygen.2 (4.7.2)
  2. جافا - الإصدار 9.0.4
  3. جرادل - 4.6
  4. خادم MongoDB - 3.6
  5. MongoCompass - 3.6
  6. SpringDataMongoDB - 2.0.5-RELEASE

3. هيكل المشروع

سيبدو هيكل مشروعنا كما هو موضح أدناه.


هيكل المشروع لبيانات الربيع MongoDB

سيكون لمشروع gradle الهيكل الموضح أعلاه. في حالة pom.xml ، ستكون بنية المشروع مختلفة قليلاً.

4. البرنامج

كجزء من هذا البرنامج ، سنحاول إكمال المهام أدناه.

  1. حفظ كائن في MongoDB
  2. تحديث كائن في MongoDB
  3. إزالة كائن من MongoDB
  4. استرجاع جميع الكائنات من MongoDB

دعونا الآن نحلل جميع مكونات البرنامج. بادئ ذي بدء ، سنبدأ بالتبعيات وملفات الجرة اللازمة للبرنامج.

4.1 تدرج

نستخدم Gradle لبناء جزء من البرنامج. build.gradle ملف build.gradle كما هو موضح أدناه.

 apply plugin: 'java' repositories { mavenCentral() } dependencies { compile group: 'org.springframework.data', name: 'spring-data-mongodb', version: '2.0.5.RELEASE' implementation 'com.google.guava:guava:23.0' testImplementation 'junit:junit:4.12' } 

في ملف build.gradle ، apply plugin: 'java' السطر apply plugin: 'java' يخبر المكوّن الإضافي المطلوب تثبيته. في حالتنا ، هذا هو البرنامج المساعد جافا.

تشير علامة repositories{} إلى المستودع الذي يجب سحب التبعيات منه. لقد اخترنا mavenCentral لسحب ملفات الجرة التابعة. يمكننا أيضًا استخدام jcenter لسحب ملفات الجرة التابعة المقابلة.

يتم استخدام علامة dependencies {} لتوفير البيانات اللازمة حول ملفات jar التي يجب سحبها للمشروع.

4.2 تكوين MongoDB

لاستخدام تكوين MongoDB ، نحتاج إلى تطبيق فئة AbstractMongoConfiguration . سوف تبدو فئة MongoConfig.java كما هو موضح أدناه. هنا نستخدم التعليقات التوضيحية بدلاً من XML. ولكن يمكن أيضًا استخدام XML لتكوين التكوين.

تنفيذ فئة MongoConfig.java

 package com.tutorial.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.mongodb.config.AbstractMongoConfiguration; import com.mongodb.MongoClient; @Configuration public class MongoConfig extends AbstractMongoConfiguration { @Override public String getDatabaseName() { return "local"; } @Override @Bean public MongoClient mongoClient() { return new MongoClient("127.0.0.1"); } } 

يستخدم @Configuration لتعريف فئة MongoConfig.java أنها فئة التكوين. @Bean يحدد MongoClient .

4.3 فئة النموذج

الآن فكر في فئة النموذج. نستخدم student.java كفئة نموذجية تحتوي على سمات الطالب ، مثل الاسم والعمر. Student.java استخدام Student.java نموذج Student.java لتعيين POJOs إلى مجموعة MongoDB.

فئة نموذج الطالب

 package com.tutorial.model; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; @Document(collection = "students") public class Student { public Student(String studentName, int studentAge) { this.studentName = studentName; this.studentAge = studentAge; } @Id private String id; String studentName; int studentAge; public String getStudentName() { return studentName; } public void setStudentName(String studentName) { this.studentName = studentName; } public int getStudentAge() { return studentAge; } public void setStudentAge(int studentAge) { this.studentAge = studentAge; } @Override public String toString() { return String.format( "Student[id=%s, studentName='%s', studentAge="+studentAge+"]", id, studentName); } } 

@Document يحدد المستند. تحدد خاصية المجموعة المجموعة التي سيتم استخدامها لمطابقة المجموعة. يجب أن تكون جميع السمات المشار إليها كجزء من المجموعة يمكن الوصول إليها في فئة POJO. يعرّف @Id معرّف المجموعة.

4.4 عمليات CRUD

لتنفيذ عمليات CRUD (وهي اختصار للإنشاء والقراءة والتحديث والحذف) ، مثل حفظ البيانات وتحديثها وحذفها واستردادها من MongoOperations سنستخدم MongoOperations .

الآن دعونا نلقي نظرة على فئة MongoDBPOperations.java . تحتوي هذه الفئة على تنفيذ جميع أساليب عمليات CRUD.

فئة MongoDBPOperations التي سيتم استخدامها لتنفيذ عمليات CRUD

 package com.tutorial; import java.util.List; import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Update; import com.tutorial.model.Student; public class MongoDBPOperations { public void saveStudent(MongoOperations mongoOperation, Student student) { mongoOperation.save(student); System.out.println("Student saved successfully"); // student object got created with id. System.out.println("student : " + student); } public void searchStudent(MongoOperations mongoOperation, String critera,String value) { // query to search student Query searchStudent = new Query(Criteria.where(critera).is(value)); // find student based on the query Student resultStudent = mongoOperation.findOne(searchStudent, Student.class); System.out.println("Student found!!"); System.out.println("Student details: " + resultStudent); } public void updateStudent(MongoOperations mongoOperation, String critera,String value, String updateCriteria, String updateValue) { // query to search student Query searchStudent = new Query(Criteria.where(critera).is(value)); mongoOperation.updateFirst(searchStudent, Update.update(updateCriteria, updateValue), Student.class); System.out.println("Student got updated successfully"); } public void getAllStudent(MongoOperations mongoOperation) { List listStudent = mongoOperation.findAll(Student.class); for(Student student:listStudent) { System.out.println("Student = " + student); } } public void removeStudent(MongoOperations mongoOperation, String critera,String value) { Query searchStudent = new Query(Criteria.where(critera).is(value)); mongoOperation.remove(searchStudent, Student.class); System.out.println("Student removed successfully!! "); } } 

أهم فئة في برنامج Java هي الفئة التي تحتوي على الطريقة main .

4.5 فئة التطبيق

الفئة الرئيسية التي تحتوي على الطريقة الرئيسية هي فئة Application.java . سنستخدم هذه الفئة لاستدعاء أساليب من فئة MongoDBPOperations .

فئة التطبيق لاستدعاء أساليب فئة MongoDBPOperations

 package com.tutorial; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.data.mongodb.core.MongoOperations; import com.tutorial.config.MongoConfig; import com.tutorial.model.Student; public class Application { public static void main (String[] args) { // For Annotation ApplicationContext ctx = new AnnotationConfigApplicationContext(MongoConfig.class); MongoOperations mongoOperation = (MongoOperations) ctx.getBean("mongoTemplate"); MongoDBPOperations ops = new MongoDBPOperations(); Student student = new Student("John", 15); //save student ops.saveStudent(mongoOperation, student); // get student based on search criteria ops.searchStudent(mongoOperation, "studentName", "John"); //update student based on criteria ops.updateStudent(mongoOperation, "StudentName", "John", "studentAge", "18"); // get student based on search criteria ops.searchStudent(mongoOperation, "studentName", "John"); // get all the students ops.getAllStudent(mongoOperation); //remove student based on criteria ops.removeStudent(mongoOperation, "studentName", "John"); // get all the students ops.getAllStudent(mongoOperation); } } 

دعونا ننظر خطوة بخطوة إلى العمليات التي يتم تنفيذها في فئة Application.java :

  1. نقوم بإنشاء ApplicationContext . هذا بسبب الحاجة إلى تنزيل التكوين.
  2. بالإضافة إلى ذلك ، تم MongoOperations كائن MongoOperations لتحميل مكون MongoTemplate .
  3. يوفر كائن MongoDBOperations الوصول إلى طرق تنفيذ عمليات MongoOperation المختلفة.
  4. بالإضافة إلى ذلك ، تم إنشاء كائن الطالب باسم جون وعمره 15 عامًا.
  5. نسمي طريقة saveMethod لفئة saveMethod ، saveMethod المعلمات الضرورية لحفظ الكائن في قاعدة البيانات.
  6. بنفس الطريقة ، نطلق على أساليب MongoDBOperations المختلفة واحدة تلو الأخرى.

4.6 بدء البرنامج

أخيرًا ، فلنقم الآن بتشغيل البرنامج كتطبيق Java. انقر بزر الماوس الأيمن على Application.java -> Run as -> Java Application.

ستظهر النتيجة التالية في وحدة التحكم.


إخراج وحدة التحكم بعد بدء البرنامج

الآن دعنا نعلق الأمر لحذف الكائن. سيقوم MongoDB بتخزين البيانات بنجاح.

أيضًا ، دعنا نعلق على السطر لحذف الكائن ، كما هو موضح أدناه.

تطبيق فئة بعد التعليق طرق الإزالة

 package com.tutorial; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.data.mongodb.core.MongoOperations; import com.tutorial.config.MongoConfig; import com.tutorial.model.Student; public class Application { public static void main (String[] args) { // For Annotation ApplicationContext ctx = new AnnotationConfigApplicationContext(MongoConfig.class); MongoOperations mongoOperation = (MongoOperations) ctx.getBean("mongoTemplate"); MongoDBPOperations ops = new MongoDBPOperations(); Student student = new Student("John", 15); //save student ops.saveStudent(mongoOperation, student); // get student based on search criteria ops.searchStudent(mongoOperation, "studentName", "John"); //update student based on criteria ops.updateStudent(mongoOperation, "StudentName", "John", "studentAge", "18"); // get student based on search criteria ops.searchStudent(mongoOperation, "studentName", "John"); // get all the students ops.getAllStudent(mongoOperation); //remove student based on criteria //ops.removeStudent(mongoOperation, "studentName", "John"); // get all the students //ops.getAllStudent(mongoOperation); } } 

بعد إجراء تغييرات على البرنامج ، دعنا نعيد تشغيله. يظهر ما يلي في وحدة التحكم.


وحدة التحكم عند التعليق على عملية الحذف

نتيجة للتعليق على أمر الحذف ، سيقوم MongoDB بتخزين البيانات وبالتالي سيبدو كما هو موضح أدناه.


إخراج MongoDB بعد أمر الحفظ والتحديث

5. قم بتنزيل مشروع Eclipse

يمكنك تنزيل شفرة المصدر بأكملها لهذا المثال هنا.

النهاية

كما هو الحال دائمًا ، نحن ننتظر الأسئلة والتعليقات هنا أو نذهب إلى يوري للحصول على درس مفتوح حيث لا يمكنك الاستماع فحسب ، بل أيضًا الاستفسار.

Source: https://habr.com/ru/post/ar430520/


All Articles