В современном мире очень важно как можно быстрее запустить и запустить приложение. Приложение также должно быть легко разрабатывать и поддерживать.
Spring — это такой фреймворк, который обеспечивает простоту интеграции с множеством различных фреймворков, что облегчает разработку приложения с использованием Spring. Одной из таких интеграций является интеграция Spring с MongoDB.
1. Введение
В этом уроке мы обсудим комбинацию наиболее известного Java-фреймворка «Spring» и самой известной базы данных NoSQL «MongoDB». MongoDB является базой данных NoSQL на основе документов, которая хранит данные в JSON-подобной структуре.
SpringData и MongoDB обеспечивают интеграцию Spring для легкой интеграции двух и для обеспечения простоты для разработчиков, не беспокоясь о написании нескольких запросов на вставку, обновление и удаление.
Ниже приведены некоторые функции, предоставляемые проектом SpringData MongoDB:
- SpringData позволяет использовать класс
@Configurationи конфигурацию на основе XML. - Доступ к данным Иерархия исключений Spring используется для перевода исключений.
- Интегрированное отображение между Java POJO и документом MongoDB.
- Класс
MongoTemplateкоторый позволяет легко использовать обычные операции MongoDB. - В дополнение к
MongoTemplate,MongoReaderиMongoWriterдля низкого уровня отображения.
Лучший способ понять любую технологию — это практиковать ее, и мы собираемся сделать то же самое сейчас.
Теперь давайте создадим простую программу для более детального понимания Spring Data MongoDB.
2. Технологии и инструменты
Давайте посмотрим на технологии и инструменты, используемые для создания программы.
- Eclispe Oxygen.2 Release (4.7.2)
- Java — версия 9.0.4
- Gradle — 4.6
- Сервер MongoDB — 3,6
- МонгоКомпас — 3,6
- SpringDataMongoDB — 2.0.5-RELEASE
3. Структура проекта
Структура нашего проекта будет выглядеть так, как показано ниже.
Структура проекта Gradle будет иметь вышеуказанную структуру проекта. В случае pom.xml структура проекта будет немного отличаться.
4. Программа
В рамках этой программы мы постараемся достичь нижеуказанных целей.
- Сохранить объект в MongoDB
- Обновить объект в MongoDB
- Удалить объект из MongoDB
- Получить все объекты из MongoDB
Давайте теперь разберемся во всех компонентах программы. Прежде всего мы начнем с зависимостей программы и фляг, которые необходимы для программы.
4.1 Gradle
Мы используем Gradle для сборки как часть программы. Файл build.gradle будет выглядеть так, как показано ниже.
build.gradle
|
01
02
03
04
05
06
07
08
09
10
|
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' сообщает нам плагин, который нужно установить. Для нас это плагин Java.
repositories{} позволяет нам узнать репозиторий, из которого следует извлечь зависимость. Мы выбрали mavenCentral чтобы вытащить банки зависимостей. Мы также можем использовать jcenter для jcenter соответствующих jcenter зависимостей.
Тег dependencies {} используется для предоставления необходимых сведений о файле jar, которые необходимо извлечь для проекта.
4.2 Конфигурация для MongoDB
Чтобы использовать конфигурацию MongoDB, нам нужно реализовать класс AbstractMongoConfiguration . Класс MongoConfig.java будет выглядеть так, как показано ниже. Здесь мы используем аннотации вместо xml. Но даже XML также можно использовать для настройки конфигурации.
Реализация класса MongoConfig.java
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
|
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;@Configurationpublic 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 компонент MongoClient .
4.3 Модельный класс
Теперь посмотрим на модель класса. В качестве модельного класса мы используем student.java который содержит атрибуты для Student, такие как Name и age. Student.java модели Student.java используется для отображения POJO в коллекцию MongoDB.
Модельный класс для ученика
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
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, таких как сохранение данных, обновление данных, удаление данных и получение данных из MongoDB, мы будем использовать MongoOperations .
Теперь давайте посмотрим на класс MongoDBPOperations.java . Этот класс содержит реализацию для всех методов операций CRUD.
Класс MongoDBPOperations, который будет использоваться для выполнения операций CRUD
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
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 Класс применения
Основным классом, который содержит метод main, является класс Application.java . Мы будем использовать этот класс для вызова методов из класса MongoDBPOperations .
Класс приложения для вызова методов класса MongoDBPOperations
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
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 :
- Мы создаем
ApplicationContext. Это связано с необходимостью загрузки конфигурации. - Кроме того, объект
MongoOperationsсоздается для загрузкиMongoTemplateкомпонентаMongoTemplate. - Объект
MongoDBOperationsпредоставляет доступ к методам для выполнения различных методовMongoOperation. - Кроме того, создайте объект Student с именем John and Age как 15.
- Мы вызываем
saveMethodMongoDBOperationsи передадим необходимые параметры для сохранения объекта в базе данных. - Точно так же мы вызываем различные методы
MongoDBOperationsодин за другим.
4.6 Запустите программу
Наконец, давайте теперь запустим программу как Java-приложение. Щелкните правой кнопкой мыши Application.java -> Запуск от имени -> Java-приложение.
Следующий результат появится на консоли.
Теперь давайте прокомментируем команду для удаления объекта. MongoDB успешно сохранит данные.
Кроме того, давайте прокомментируем строку для удаления объекта, как показано ниже.
Класс приложения после комментирования удалить методы
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
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 сохранит данные и, следовательно, будет выглядеть так, как показано ниже.
5. Загрузите проект Eclipse
Это был пример Spring Data MongoDB.



