MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да използвате Spring Boot с MongoDB

Spring Boot е базирана на Java рамка с отворен код за създаване на микроуслуги, която позволява на разработчиците да внедряват и разработват услуги независимо. Всяка изпълнявана услуга има свой процес, като по този начин се постига олекотения модел, който поддържа бизнес приложения. Микроуслугите имат няколко предимства:проста мащабируемост, минимална конфигурация, по-малко време за производство, съвместимост с контейнери и лесна разработка.

Spring boot предоставя добра платформа за разработчиците за изграждане на самостоятелни и готови за производство пружинни приложения, които можете просто да стартирате; по този начин човек може да започне с минимални конфигурации, без да се нуждае от цялостна настройка на пружинната конфигурация.

Например, управлението на зависимостта е сложно за големи проекти; По този начин Spring Boot разрешава тази трудност, като предоставя набор от зависимости за удобство на разработчиците. Приложението Spring Boot сканира всички декларации за фабул и пакети, когато приложението се инициализира; Освен това анотацията на приложението Spring Boot включва сканиране на компоненти, автоматично конфигуриране и конфигурация на Spring Boot.

Характеристики на Spring Boot

По-долу са някои от стандартните функции на spring-boot:

  1. Автоматично конфигурира Spring библиотеките и библиотеките на трети страни, когато е възможно
  2. Осигурява независими „стартиращи“ зависимости, за да опрости конфигурацията на компилацията ви
  3. Няма изискване за XML конфигурация и без генериране на код
  4. Освен това, той предлага функции, готови за производство, като външни параметри за конфигурация и проверки на състоянието.
  5. Има вградени Tomcat, Undertow Direct или Jetty; по този начин няма нужда от разполагане на WAR файлове
  6. Освен това създава самостоятелни Spring приложения

Предимства на Spring Boot за разработчиците

  1. Повишава производителността
  2. Улеснява разработването и разбирането на пролетните приложения
  3. Намалява времето за развитие.

 Цели на Spring Boot

Той е предназначен за:

  1. Разработвайте готови за производство пружинни приложения по по-прост начин
  2. Избягвайте сложна XML конфигурация през пролетта
  3. Намалете времето за разработка и стартирайте приложението независимо
  4. Предложете по-прост начин да започнете с приложението.

Spring Boot е по-предпочитан поради функциите и предимствата, които предоставя като:

  1. Осигуряване на мощна пакетна обработка и управление на REST крайни точки
  2. Предоставяне на по-гъвкав начин за конфигуриране на транзакции с данни, Java Beans j и XML конфигурации.
  3. Предлага пояснения – базирани на пролетни приложения
  4. Опростява управлението на зависимостите, включва вграден контейнер за сервлет
  5. Не са необходими ръчни конфигурации, тъй като всичко в Spring Boot се конфигурира автоматично

MongoDB е достъпна, междуплатформена, документно-ориентирана програма за бази данни. Това е документна база данни, която осигурява висока мащабируемост и гъвкавост на програмите. Освен това, той предлага на потребителите бързи заявки и индексиране, което в дългосрочен план повишава неговата производителност.

MongoDB е класифицирана като програма за база данни NoSQL и използва подобни на JSON документи с незадължителни и гъвкави схеми. Тази база данни е разработена от MongoDB Inc., американска компания, която разработва и предоставя търговска поддръжка за достъпната база данни. MongoDB е лицензиран под публичния лиценз от страна на сървъра (SSPL).

MongoDB има непрекъснато подобрение на функциите си, например, поради текущото разработване на версии;

ДАТА ВЕРСИЯ БЕЛЕЖКА ЗА ФУНКЦИИ
Декември 2009 г. 1.2 Съхранени функции на JavaScript
По-бързо създаване на индекс
Повече индекси на колекция
Конфигурируемо време за синхронизиране
Няколко незначителни функции и корекции
Август 2010 г. 1.6 Карта/намаляване
Набори реплики
Разделяне, готово за производство
Поддръжка за IPv6
март 2013 г. 2.4 Хеширан индекс
Превключете към V8 JavaScript машина
Подобрена геопространствена поддръжка
Подобрено текстово търсене
Подобрения на сигурността
8 април 2014 г. 2.6 Подобрения в системата за заявки
Подобрения на агрегирането
Подобрения на сигурността
Нов протокол за операция на запис
Интеграция с текстово търсене
3 март 2015 г. 3.0 Подобрена функционалност за обяснение
Приложен програмен интерфейс (API) на механизма за съхранение с добавка
MongoDB Ops Manager
Поддръжка на механизма за съхранение на Wired Tiger
SCRAM-SHA-1 удостоверяване
8 декември 2015 г. 3.2 Подобрения за избор на репликация
Проверки на документи
По подразбиране машината за съхранение на Wired Tiger
Конфигурирайте сървърите като набори от реплики
Преместено от V8 към Spider Monkey
Проверки на документи
Прочетете загрижеността
29 ноември 2016 г. 3.4 Съпоставяне, линеаризуеми притеснения и изгледи при четене
юни 2018 г. 4.0 Подобрени транзакции
13 юли 2021 г. 5.0 Криптиране на ниво поле от страна на клиента
Доказателство за бъдещето API с версия
Поддръжка на времеви серии
Повторното разделяне на живо включва промяна на съпоставянията на обект-фрагмент и преместване на обекта в друг фрагмент.

Бързи и лесни самостоятелни приложения могат да бъдат създадени с помощта на Spring Boot (както ще видим по-късно). В резултат на своята лекота на използване, MongoDB се превърна в най-популярната NoSQL база данни. Бързо, безопасно, надеждно и изискващо минимално време за разработка може да се създаде чрез комбиниране на Spring Boot и MongoDB.

Тази статия показва как да използвате API на Spring Data MongoDB, за да комбинирате Spring Boot с MongoDB.

Как да използвам Spring Boot с MongoDB

Spring Boot е базирана на микроуслуги уеб рамка, която се конфигурира автоматично и може да осигури вградени функции за сигурност и достъп до база данни. По този начин Spring boot може бързо да създаде самостоятелно приложение без промени в конфигурацията. От друга страна, MongoDB е най-популярната NoSQL база данни, тъй като може лесно да съхранява и извлича данни. Комбинирането на Spring Boot и MongoDB води до сигурни, бързи и надеждни приложения, изискващи минимално време за разработка.

Spring Boot създава бързи приложения, готови за производство. MongoDB и Spring Boot взаимодействат с помощта на класа Mongo Template и интерфейса на Mongo Repository.

  • Шаблон Mongo — внедрява набор от готови за използване API. Добър избор за операции като агрегирани актуализации, между другото; освен това, Mongo Template предлага по-прецизен контрол върху персонализираните заявки.
  • Хранилище Mongo се използва за основни заявки, включващи много полета на документи, като преглед на документи и създаване на данни.

Spring Boot конфигурацията на MongoDB, използваща и двата подхода, се нуждае само от няколко реда код.

Spring Boot е приложна рамка за уеб приложения на Java, базирана на рамката MVC (Model-View-Controller). Неговото инжектиране на зависимост обработва функции като сигурност на базата данни, достъп и инициализация, което позволява на разработчиците да се съсредоточат върху бизнес логиката. Също така, той е изграден върху рамката на Spring, главно за REST API и изисква много малко конфигурации. Има четири слоя:

Слоят за презентация — Частта за изглед на рамката MVC обработва предния край.

Бизнес слоят е контролерът, където се извършва цялата бизнес логика и валидации.

Слой за постоянство — Този слой превежда бизнес обектите в обекти на база данни.

Слой на базата данни — Действителните CRUD (Създаване, Четене, Актуализиране, Изтриване).

MongoDB е бърза база данни, способна да обработва огромни количества организирани и неструктурирани данни, което я прави идеална за уеб приложения. MongoDB съхранява данни като двоични JSON обекти, което опростява извличането на данни. Рамката Spring включва стабилни конектори, които позволяват ефективни операции с база данни с MongoDB.

Ние сме загрижени единствено за слоевете Persistence и Database в този примерен урок за Spring Boot с MongoDB. Ние ще изпълняваме нашия софтуер чрез интегрирана среда за разработка (IDE), за да поддържаме силен акцент върху операциите на CRUD. За да свържем Spring Boot и MongoDB, ще добавим конфигурации на Spring Boot MongoDB.

Какво ще изградим в този пример

Нека разработим списък за пазаруване на хранителни стоки на фиктивен потребител. Ще извършим следните процедури:

  1. Ние дефинираме елемент за хранителни стоки обикновен стар Java обект (POJO) с идентификатор, име, количество и категория в нашето приложение Spring.
  2. След това извършваме действия за създаване, четене, актуализиране и изтриване (CRUD) чрез публичния интерфейс на MongoRepository.
  3. Накрая демонстрираме различен метод за модифициране на документи, като използваме класа MongoTemplate.

Предварителни условия

Ние изискваме:

  • Cluster MongoDB Atlas (ако все още нямате акаунт, регистрирайте се безплатно, преди да продължите към следващата фаза).
  • Spring Initializr
  • Java 1.8
  • Maven (инсталирайте Maven, като отидете на „Помощ -> след това Инсталирайте нов софтуер“ в Eclipse).
  • Интегрирана среда за разработка (IDE) ще импортира основните библиотеки и зависимости. Eclipse ще се използва за илюстрацията на този проект.

За да започнете, създайте проект Spring Boot със следните настройки с помощта на Spring Initializr:

Изберете Maven Project с Java (8) като език за програмиране и Spring Boot 2.5.3 като версия. Освен това добавете зависимости Spring Web и Spring Data MongoDB. Spring Web интегрира сървъра Apache Tomcat, Spring MVC и REST във вашето приложение, за да централизира управлението на всички общи зависимости.

Ние използваме зависимостта на Spring Data MongoDB за достъп до данни от нашия MongoDB Atlas клъстер в това приложение.

Въведете метаданните за проекта (както е показано по-горе) и изберете опцията JAR. Spring Initializr управлява създаването на pom.xml файл, докато Maven изтегля необходимите зависимости чрез pom.xml.

Това завършва подготовката ни за настройките. След това можем да щракнем върху бутона Генериране, за да генерираме всички файлове, необходими за стартиране на проекта Spring Boot. След това браузърът автоматично ще започне да изтегля ZIP файл.

След като изтеглите ZIP файла, разархивирайте проекта. От IDE отворете проекта. Можете да видите пример за структура на проекта, подобна на тази:

Както виждаме, добавените от нас зависимости са включени във файла pom.xml като artifactId:

Време е да попълните поддиректорията src/main/java със съдържание.

Внедряване на модела MongoDB

Класът POJO или GroceryItem служи като наш модел тук.

Създайте пакет с име „com.example.mdbspringboot.model“ и включете класа GroceryItem.java в него.

Анотацията @Document се използва за определяне на името на колекцията, която моделът ще използва. MongoDB ще създаде колекцията, ако тя все още не съществува.

Можем да генерираме гетери и сетери за този код, като използваме опцията Eclipse Source -> Generate Getters and Setters. Първо, използвайте анотацията @Id, за да посочите първичния ключ _id на документа MongoDB. MongoDB автоматично ще създаде поле _id, когато документът бъде създаден, ако не посочим нищо.

Внедряване на MongoDB API в Spring Boot

Хранилището е мястото, където се внедрява API. Той служи като мост между базата данни и модела, осигурявайки достъп до всички CRUD дейности.

Създайте пакет с име „com.example.mdbspringboot.repository“, за да съдържа всички файлове на хранилището.

Създаваме публичен интерфейс за ItemRepository, който разширява интерфейса на MongoRepository.

Първият подход, findItemByName, изисква аргумент на заявка, който определя полето, по което заявката трябва да бъде филтрирана. Това се посочва с помощта на анотацията @Query. Втората техника се възползва от полето за категория, за да извлече всички обекти, принадлежащи към конкретна категория. Искаме само името и номера на полето, проектирани в отговора на заявката; следователно ние задаваме тези полета на 1. Прилагаме отново метода count() в текущото му състояние.

Примери за MongoDB с Spring Boot CRUD

Вече сме готови да разработим нашето Spring Application и да тестваме методите.

За да се свържете с MongoDB Atlas, ние дефинираме низа за свързване във файла application.properties на папката src/main/resources. Низът за свързване на клъстера може да бъде достъпен в потребителския интерфейс на Atlas. Не се изисква друг файл, който да включва код, свързан с връзката. Spring Boot управлява връзката с базата данни от наше име.

Освен това тук указваме името на базата данни – MongoDB ще създаде такава, ако не съществува.

Ние не използваме контролера или изгледа в тази проба на MongoDB за Spring Boot. Вместо това, за да видите изхода на конзолата, ще използваме CommandLineRunner.

Създайте основния клас MdbSpringBootApplication.java в основния пакет com.example.mdbspringboot:

За да изпълни пролетното приложение, нашият клас MdbSpringBootApplication използва интерфейса CommandLineRunner. ItemRepository е Autowired, което означава, че Spring ще го открие автоматично. Анотацията @SpringBootApplication се използва за инициализиране на контекста на приложението. Освен това активираме хранилищата на Mongo с @EnableMongoRepositories. Структурата на нашия проект вече трябва да прилича на следното:

Сега нека добавим операциите на хранилището към основния клас, който ще се използва за CRUD операции:

Създайте операция MongoDB Spring Boot

Ще използваме функцията за запазване, за да създадем нови документи. Имаме достъп до метода за запазване чрез класа SimpleMongoRepository, който използва протокола MongoRepository. Нашият интерфейс ItemRepository разширява интерфейса ItemRepository на MongoRepository.

Методът за запазване ще приеме параметър от типа GroceryItem. Този раздел ще създаде пет хранителни артикула (документа), след което ще използва функцията за запазване, за да ги съхранява в MongoDB.

Операции за четене на MongoDB Spring Boot

Ние провеждаме четири отделни операции за четене в това приложение:

Използвайте функцията findAll(), за да извлечете всички документи (бакалски артикули).

Функцията findItemByName връща единичен елемент (документ) въз основа на неговото поле за име.

Извличане на списък с обекти, организирани по категории.

Изчислете общия брой обекти.

Можем да проектираме помощна функция за форматиране на резултата от операциите за четене:

Операция за актуализиране на MongoDB Spring Boot

Да приемем, че променим мнението си и предпочитаме термина „мънчи“ пред „закуски“ в нашия списък с хранителни стоки. Ще трябва да актуализираме всички документи, които съдържат категорията „закуски“. За да постигнем това, първо трябва да извлечем всички документи, принадлежащи към категорията „закуски“, да променим категорията на „мунчи“ и след това да запазим всички документи.

Операция за изтриване на MongoDB Spring Boot

Вместо да променяме категория или артикул, може да искаме да премахнем хранителен артикул от нашия списък. Използвайки предварително дефинираната функция deleteById, можем да премахнем хранителния артикул с конкретен идентификатор.

Бихме могли да използваме groceryItemRepo.deleteAll(); функция за премахване на всички елементи. Премахването на всички документи в колекцията няма да ги изтрие.

Сглобяване на CRUD операции

След това ще внедрим CommandLineRunner. За да извикате предходните методи, използвайте метода run():

Операторите system.out се използват за подобряване на външния вид на изхода.

Когато софтуерът се стартира, се очаква следният изход:

Функцията за актуализиране на MongoDB Spring Boot във връзка с MongoTemplate

Освен това можем да използваме класа MongoTemplate за извършване на действия за актуализиране на конкретно поле. Той включва функционалността по подразбиране на пакета org.springframework.data.mongodb.core.query. Не е нужно да пишем голямо количество код и актуализацията може да бъде осъществена с една заявка за база данни. MongoTemplate може да се използва и за по-сложни процеси като агрегации (не е в обхвата на това ръководство).

Трябва да се направи персонализирано хранилище, преди да се използва клас, наречен MongoTemplate. Тук ще бъде изградена заявката за актуализация.

Позволете ми да демонстрирам как да конструирам метод, който актуализира количеството на артикул в супермаркет.

Създайте интерфейс CustomItemRepository:

Можем да разширим интерфейса с толкова методи, колкото е необходимо, и да предоставим примери в класа CustomItemRepositoryImpl:

Spring ще импортира зависимостите на обекта, защото MongoTemplate е @Autowired. Освен това анотацията @Component позволява на Spring да открие интерфейса на CustomItemRepository.

Следващата стъпка е да извикате тази функция от нашия главен клас. Както при groceryItemRepo, ние трябва да дефинираме нашето customRepo, както следва:

След това, в основния клас, създайте следния метод, който извиква нашата customRepo функция:

Добавете следния метод към метода за изпълнение, така че да се извиква при стартиране на програмата:

Трябва да получите следния резултат:

Както беше казано по-горе, успяхме да извършим модификацията в една транзакция на база данни вместо в MongoRepository, което изисква три действия:търсене, задаване и запазване. MongoTemplate също така включва метода updateMulti(), който ви позволява да актуализирате няколко документа едновременно.

Заключение

В тази статия демонстрирахме колко лесно е да интегрирате MongoDB с Spring Boot. Не се изисква друг код за свързване с MongoDB Atlas. MongoDB Atlas предоставя лесен за използване интерфейс за съхранение и достъп до данни от всяко място. Ако сте завършили този прост урок, вярваме, че вече разбирате как да използвате Spring Boot с MongoDB. Ако срещнете някакви затруднения, свържете се с раздела за коментари за помощ. Благодаря за четенето.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Помогнете да дефинирате страхотен инструмент за графичен интерфейс на MongoDB

  2. Как да използвате MongoRegex (драйвер MongoDB C#)

  3. Защо имаме нужда, какви предимства да използваме мангуста

  4. MongoDB Показване на детски елементи във връзка Едно към много

  5. Mongoose find() не връща резултат