MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak używać Spring Boot z MongoDB

Spring Boot to oparta na Javie platforma open source do tworzenia mikrousług, która umożliwia programistom niezależne wdrażanie i rozwijanie usług. Każda uruchomiona usługa ma swój proces, dzięki czemu uzyskuje się lekki model obsługujący aplikacje biznesowe. Mikrousługi mają kilka zalet:prosta skalowalność, minimalna konfiguracja, krótszy czas produkcji, kompatybilność kontenerów i łatwy rozwój.

Spring boot stanowi dobrą platformę dla programistów do tworzenia samodzielnych i gotowych do produkcji aplikacji wiosennych, które można po prostu uruchomić; w ten sposób można zacząć od minimalnych konfiguracji bez konieczności przeprowadzania całej konfiguracji sprężynowej.

Na przykład obsługa zarządzania zależnościami jest złożona w przypadku dużych projektów; Spring Boot rozwiązuje więc tę trudność, dostarczając zestaw zależności dla wygody programisty. Aplikacja Spring Boot skanuje wszystkie ziarna i deklaracje pakietów podczas inicjowania aplikacji; Poza tym adnotacja aplikacji Spring Boot obejmuje skanowanie komponentów, automatyczną konfigurację i konfigurację Spring Boot.

Cechy wiosennego buta

Poniżej znajdują się niektóre standardowe cechy butów sprężynowych:

  1. O ile to możliwe automatycznie konfiguruje biblioteki Spring i inne firmy
  2. Zapewnia ugruntowane zależności „startowe”, aby uprościć konfigurację kompilacji
  3. Nie wymaga konfiguracji XML ani generowania kodu
  4. Ponadto oferuje funkcje gotowe do produkcji, takie jak zewnętrzne metryki konfiguracji i kontrole stanu
  5. Ma osadzony Tomcat, bezpośrednio Undertow lub Jetty; w związku z tym nie ma potrzeby wdrażania plików WAR
  6. Ponadto tworzy samodzielne aplikacje Spring

Zalety Spring Boot dla programistów

  1. Zwiększa produktywność
  2. Ułatwia opracowywanie i rozumienie aplikacji wiosennych
  3. Skraca czas rozwoju.

 Cele wiosennego buta

Jest przeznaczony do:

  1. Tworzenie gotowych do produkcji aplikacji sprężynowych w prostszy sposób
  2. Unikaj skomplikowanej konfiguracji XML na wiosnę
  3. Skróć czas programowania i niezależnie uruchamiaj aplikację
  4. Zaoferuj prostszy sposób rozpoczęcia pracy z aplikacją.

Spring Boot jest bardziej preferowany ze względu na funkcje i korzyści, które zapewnia, takie jak:

  1. Zapewnienie potężnego przetwarzania wsadowego i zarządzania punktami końcowymi REST
  2. Zapewnienie bardziej elastycznego sposobu konfigurowania transakcji danych, konfiguracji Java Beans j i XML.
  3. Oferuje adnotacje oparte na aplikacjach wiosennych
  4. Ułatwia zarządzanie zależnościami, zawiera wbudowany kontener serwletów
  5. Nie są potrzebne ręczne konfiguracje, ponieważ wszystko w Spring Boot jest konfigurowane automatycznie

MongoDB jest dostępnym źródłem, wieloplatformowym, zorientowanym na dokumenty programem bazodanowym. Jest to baza dokumentów zapewniająca wysoką skalowalność i elastyczność programów. Poza tym oferuje użytkownikom szybkie zapytania i indeksowanie, co na dłuższą metę zwiększa jego wydajność.

MongoDB jest klasyfikowany jako program bazy danych NoSQL i używa dokumentów podobnych do JSON z opcjonalnymi i elastycznymi schematami. Ta baza danych została opracowana przez MongoDB Inc., amerykańską firmę, która opracowuje i zapewnia komercyjne wsparcie dla bazy danych dostępnych w źródłach. MongoDB jest objęty licencją publiczną po stronie serwera (SSPL).

MongoDB stale ulepsza swoje funkcje, na przykład ze względu na ciągły rozwój wersji;

DATA WERSJA UWAGA DOTYCZĄCA FUNKCJI
Grudzień 2009 1,2 Przechowywane funkcje JavaScript
Szybsze tworzenie indeksów
Więcej indeksów na kolekcję
Konfigurowalny czas synchronizacji
Kilka drobnych funkcji i poprawek
Sierpień 2010 1.6 Mapuj/zmniejszaj
Zestawy replik
Sharding gotowy do produkcji
Obsługa IPv6
Marzec 2013 2.4 Indeks zaszyfrowany
Przełącz na silnik JavaScript V8
Ulepszona obsługa geoprzestrzenna
Ulepszone wyszukiwanie tekstowe
Ulepszenia bezpieczeństwa
8 kwietnia 2014 2.6 Ulepszenia silnika zapytań
Ulepszenia agregacji
Ulepszenia bezpieczeństwa
Nowy protokół operacji zapisu
Integracja wyszukiwania tekstu
3 marca 2015 3.0 Ulepszona funkcja wyjaśniania
Wtyczkowy interfejs API silnika pamięci masowej
Menedżer operacji MongoDB
Obsługa przewodowego silnika pamięci masowej Tiger
Uwierzytelnianie SCRAM-SHA-1
8 grudnia 2015 r. 3.2 Ulepszenia wyboru replikacji
Weryfikacja dokumentów
Domyślnie przewodowy silnik pamięci masowej Tiger
Konfiguruj serwery jako zestawy replik
Przeniesiono z V8 na Spider Monkey
Weryfikacja dokumentów
Wątpliwość odczytu
29 listopada 2016 3,4 Układanie, linearyzowalne problemy i widoki dotyczące odczytu
Czerwiec 2018 4.0 Zaawansowane transakcje
13 lipca 2021 5,0 Szyfrowanie na poziomie pola po stronie klienta
Przyszłe wersje API w wersji
Obsługa szeregów czasowych
Reharding na żywo pociąga za sobą zmianę mapowania fragmentu obiektu i przeniesienie obiektu do innego fragmentu.

Szybkie i łatwe samodzielne aplikacje można tworzyć za pomocą Spring Boot (jak zobaczymy później). Ze względu na łatwość obsługi MongoDB stała się najpopularniejszą bazą danych NoSQL. Szybkie, bezpieczne, niezawodne i wymagające minimalnego czasu programowania można stworzyć, łącząc Spring Boot i MongoDB.

W tym artykule pokazano, jak używać interfejsu API Spring Data MongoDB do łączenia Spring Boot z MongoDB.

Jak używać Spring Boot z MongoDB

Spring Boot to platforma internetowa oparta na mikrousługach, która jest automatycznie konfigurowana i może zapewniać wbudowane zabezpieczenia i funkcje dostępu do bazy danych. W ten sposób Spring boot może szybko stworzyć samodzielną aplikację bez zmian konfiguracyjnych. Z drugiej strony MongoDB jest najpopularniejszą bazą danych NoSQL, ponieważ może łatwo przechowywać i pobierać dane. Połączenie Spring Boot i MongoDB zapewnia bezpieczne, szybkie i niezawodne aplikacje wymagające minimalnego czasu programowania.

Spring Boot tworzy szybkie aplikacje gotowe do produkcji. MongoDB i Spring Boot współdziałają przy użyciu klasy Mongo Template i interfejsu Mongo Repository.

  • Szablon Mongo — implementuje zestaw gotowych do użycia API. Dobry wybór dla operacji takich jak agregacja aktualizacji, między innymi; ponadto szablon Mongo oferuje bardziej wyrafinowaną kontrolę nad niestandardowymi zapytaniami.
  • Repozytorium Mongo służy do podstawowych zapytań obejmujących wiele pól dokumentów, takich jak przeglądanie dokumentów i tworzenie danych.

Konfiguracja Spring Boot MongoDB przy użyciu obu podejść wymaga tylko kilku linijek kodu.

Spring Boot to framework aplikacji dla aplikacji internetowych Java oparty na frameworku MVC (Model-View-Controller). Jego wstrzykiwanie zależności obsługuje funkcje, takie jak bezpieczeństwo bazy danych, dostęp i inicjalizacja, umożliwiając programistom skupienie się na logice biznesowej. Ponadto jest zbudowany na platformie Spring, głównie dla interfejsów API REST i wymaga bardzo niewielu konfiguracji. Ma cztery warstwy:

Warstwa prezentacji — Część widoku struktury MVC obsługuje front-end.

Warstwa biznesowa to kontroler, w którym wykonywana jest cała logika biznesowa i walidacje.

Warstwa trwałości — Ta warstwa tłumaczy obiekty biznesowe na obiekty bazy danych.

Warstwa bazy danych — Rzeczywiste operacje CRUD (tworzenie, odczytywanie, aktualizowanie, usuwanie).

MongoDB to szybka baza danych zdolna do obsługi ogromnych ilości uporządkowanych i nieustrukturyzowanych danych, dzięki czemu idealnie nadaje się do aplikacji internetowych. MongoDB przechowuje dane jako binarne obiekty JSON, co upraszcza pobieranie danych. Struktura Spring zawiera solidne złącza, które umożliwiają wydajne działanie bazy danych za pomocą MongoDB.

W tym przykładowym samouczku Spring Boot with MongoDB zajmujemy się wyłącznie warstwami Persistence i Database. Będziemy uruchamiać nasze oprogramowanie za pośrednictwem zintegrowanego środowiska programistycznego (IDE), aby utrzymać silny nacisk na operacje CRUD. Aby połączyć Spring Boot i MongoDB, dodamy konfiguracje Spring Boot MongoDB.

Co zbudujemy w tym przykładzie

Opracujmy listę zakupów spożywczych fikcyjnego użytkownika. Wykonamy następujące procedury:

  1. Zdefiniujemy artykuł spożywczy Plain Old Java Object (POJO) z identyfikatorem, nazwą, ilością i kategorią w naszej aplikacji Spring.
  2. Następnie prowadzimy działania związane z tworzeniem, odczytywaniem, aktualizacją i usuwaniem (CRUD) za pośrednictwem publicznego interfejsu MongoRepository.
  3. Na koniec demonstrujemy inną metodę modyfikowania dokumentów, wykorzystując klasę MongoTemplate.

Wymagania wstępne

Wymagamy:

  • Atlas klastra MongoDB (jeśli nie masz jeszcze konta, zarejestruj się za darmo przed przejściem do następnej fazy).
  • Wiosenne inicjowanie
  • Jawa 1.8
  • Maven (zainstaluj Maven, przechodząc do „Pomoc -> Zainstaluj nowe oprogramowanie” w Eclipse).
  • Zintegrowane środowisko programistyczne (IDE) zaimportuje podstawowe biblioteki i zależności. Zaćmienie zostanie użyte do tej ilustracji projektu.

Aby rozpocząć, utwórz projekt Spring Boot z następującymi ustawieniami za pomocą Spring Initializr:

Wybierz Maven Project z Java (8) jako językiem programowania i Spring Boot 2.5.3 jako wersję. Dodatkowo dodaj zależności Spring Web i Spring Data MongoDB. Spring Web integruje serwer Apache Tomcat, Spring MVC i REST z Twoją aplikacją, aby scentralizować zarządzanie wszystkimi typowymi zależnościami.

Wykorzystujemy zależność Spring Data MongoDB, aby uzyskać dostęp do danych z naszego klastra MongoDB Atlas w tej aplikacji.

Wprowadź metadane projektu (jak pokazano powyżej) i wybierz opcję JAR. Spring Initializr zarządza tworzeniem pliku pom.xml, podczas gdy Maven pobiera wymagane zależności za pośrednictwem pom.xml.

To kończy nasze przygotowania do ustawień. Następnie możemy kliknąć przycisk Generuj, aby wygenerować wszystkie pliki wymagane do uruchomienia projektu Spring Boot. Następnie przeglądarka automatycznie rozpocznie pobieranie pliku ZIP.

Po pobraniu pliku ZIP rozpakuj projekt. W środowisku IDE otwórz projekt. Możesz zobaczyć przykład struktury projektu podobnej do tej:

Jak widać, dodane przez nas zależności są zawarte w pliku pom.xml jako artifactId:

Czas zapełnić podkatalog src/main/java treścią.

Implementacja modelu MongoDB

Jako nasz model służy tutaj klasa POJO lub GroceryItem.

Utwórz pakiet o nazwie „com.example.mdbspringboot.model” i dołącz do niego klasę GroceryItem.java.

Adnotacja @Document służy do określenia nazwy kolekcji, z której będzie korzystał model. MongoDB utworzy kolekcję, jeśli jeszcze nie istnieje.

Możemy wygenerować gettery i settery dla tego kodu, korzystając z opcji Eclipse Source -> Generate Getters and Setters. Najpierw użyj adnotacji @Id, aby określić klucz podstawowy _id dokumentu MongoDB. MongoDB automatycznie utworzy pole _id podczas tworzenia dokumentu, jeśli nic nie określimy.

Implementacja API MongoDB w Spring Boot

Repozytorium to miejsce, w którym implementowane jest API. Służy jako pomost między bazą danych a modelem, zapewniając dostęp do wszystkich działań CRUD.

Utwórz pakiet o nazwie „com.example.mdbspringboot.repository”, aby zawierał wszystkie pliki repozytorium.

Tworzymy publiczny interfejs dla ItemRepository, który rozszerza interfejs MongoRepository.

Pierwsze podejście, findItemByName, wymaga argumentu zapytania, który określa pole, według którego zapytanie ma być filtrowane. Określa się to za pomocą adnotacji @Query. Druga technika wykorzystuje pole kategorii do pobrania wszystkich obiektów należących do określonej kategorii. Chcemy tylko nazwę i numer pola rzutowanego w odpowiedzi na zapytanie; dlatego ustawiamy te pola na 1. Ponownie stosujemy metodę count() w jej obecnym stanie.

Przykłady MongoDB ze Spring Boot CRUD

Jesteśmy teraz gotowi do opracowania naszej aplikacji Spring i przetestowania metod.

Aby połączyć się z MongoDB Atlas, definiujemy parametry połączenia w pliku application.properties folderu src/main/resources. Parametry połączenia klastra są dostępne w interfejsie użytkownika Atlas. Żaden inny plik nie jest wymagany do dołączenia kodu związanego z połączeniem. Spring Boot zarządza połączeniem z bazą danych w naszym imieniu.

Dodatkowo podajemy tutaj nazwę bazy danych – MongoDB utworzy ją, jeśli nie istnieje.

W tym przykładzie Spring Boot MongoDB nie używamy kontrolera ani widoku. Zamiast tego, aby wyświetlić dane wyjściowe na konsoli, użyjemy CommandLineRunner.

Utwórz główną klasę MdbSpringBootApplication.java w pakiecie głównym com.example.mdbspringboot:

Do uruchomienia aplikacji spring nasza klasa MdbSpringBootApplication korzysta z interfejsu CommandLineRunner. ItemRepository jest Autowired, co oznacza, że ​​Spring wykryje go automatycznie. Adnotacja @SpringBootApplication służy do inicjowania kontekstu aplikacji. Dodatkowo włączamy repozytoria Mongo za pomocą @EnableMongoRepositories. Struktura naszego projektu powinna teraz wyglądać następująco:

Teraz dodajmy operacje repozytorium do głównej klasy, która będzie używana do operacji CRUD:

Utwórz operację wiosennego rozruchu MongoDB

Użyjemy funkcji zapisywania do tworzenia nowych dokumentów. Dostęp do metody save możemy uzyskać za pośrednictwem klasy SimpleMongoRepository, która korzysta z protokołu MongoRepository. Nasz interfejs ItemRepository rozszerza interfejs ItemRepository MongoRepository.

Metoda save przyjmie parametr typu GroceryItem. Ta sekcja utworzy pięć artykułów spożywczych (dokumentów), a następnie użyje funkcji zapisywania, aby zapisać je w MongoDB.

Operacje odczytu Spring Boot MongoDB

W tej aplikacji przeprowadzamy cztery różne operacje odczytu:

Użyj funkcji findAll(), aby pobrać wszystkie dokumenty (artykuły spożywcze).

Funkcja findItemByName zwraca pojedynczy element (dokument) na podstawie jego pola nazwy.

Pobierz listę obiektów uporządkowanych według kategorii.

Oblicz całkowitą liczbę obiektów.

Możemy zaprojektować funkcję pomocniczą do formatowania wyniku operacji odczytu:

Operacja aktualizacji MongoDB Spring Boot

Załóżmy, że zmieniamy zdanie i wolimy określenie „przekąski” niż „przekąski” na naszej liście zakupów. Musielibyśmy zaktualizować wszelkie dokumenty zawierające kategorię „przekąski”. Aby to osiągnąć, musimy najpierw pobrać wszystkie dokumenty należące do kategorii „przekąski”, zmienić kategorię na „przekąski”, a następnie zapisać wszystkie dokumenty.

Operacja usuwania MongoDB Spring Boot

Zamiast zmieniać kategorię lub przedmiot, możemy chcieć usunąć artykuł spożywczy z naszej listy. Korzystając ze wstępnie zdefiniowanej funkcji deleteById, możemy usunąć artykuł spożywczy o określonym identyfikatorze.

Moglibyśmy użyć tagu groceryItemRepo.deleteAll(); funkcja usuwania wszystkich elementów. Usunięcie wszystkich dokumentów z kolekcji nie spowoduje ich usunięcia.

Składanie operacji CRUD

Następnie zaimplementujemy CommandLineRunner. Aby wywołać powyższe metody, użyj metody run():

Instrukcje system.out służą do poprawy wyglądu danych wyjściowych.

Po uruchomieniu oprogramowania oczekiwany jest następujący wynik:

Funkcja aktualizacji MongoDB Spring Boot w połączeniu z MongoTemplate

Dodatkowo możemy wykorzystać klasę MongoTemplate do przeprowadzenia akcji aktualizacji na określonym polu. Zawiera domyślną funkcjonalność pakietu org.springframework.data.mongodb.core.query. Nie musimy pisać dużej ilości kodu, a aktualizację można przeprowadzić za pomocą jednego zapytania do bazy danych. MongoTemplate może być również używany do bardziej skomplikowanych procesów, takich jak agregacje (nie objęte zakresem tego przewodnika).

Niestandardowe repozytorium musi zostać utworzone przed użyciem klasy o nazwie MongoTemplate. Tutaj zostanie zbudowane zapytanie o aktualizację.

Pozwolę sobie zademonstrować, jak skonstruować metodę, która aktualizuje ilość artykułu w supermarkecie.

Skonstruuj interfejs CustomItemRepository:

Możemy rozszerzyć interfejs o tyle metod, ile potrzeba i podać przykłady w klasie CustomItemRepositoryImpl:

Spring zaimportuje zależności obiektów, ponieważ MongoTemplate to @Autowired. Dodatkowo adnotacja @Component umożliwia Springowi wykrycie interfejsu CustomItemRepository.

Następnym krokiem jest wywołanie tej funkcji z naszej głównej klasy. Podobnie jak w przypadku sklepu spożywczegoItemRepo, musimy zdefiniować nasze customRepo w następujący sposób:

Następnie w klasie głównej utwórz następującą metodę, która wywołuje naszą funkcję customRepo:

Dodaj następującą metodę do metody uruchamiania, aby była wywoływana podczas uruchamiania programu:

Powinieneś otrzymać następujący wynik:

Jak wcześniej wspomniano, byliśmy w stanie wykonać modyfikację w pojedynczej transakcji bazy danych zamiast MongoRepository, która wymagała trzech czynności:wyszukiwania, ustawiania i zapisywania. MongoTemplate zawiera również metodę updateMulti(), która pozwala aktualizować kilka dokumentów jednocześnie.

Wniosek

W tym artykule pokazaliśmy, jak proste jest zintegrowanie MongoDB z Spring Boot. Do połączenia z MongoDB Atlas nie jest wymagany żaden inny kod. MongoDB Atlas zapewnia łatwy w użyciu interfejs do przechowywania i uzyskiwania dostępu do danych z dowolnej lokalizacji. Jeśli ukończyłeś ten prosty samouczek, uważamy, że teraz rozumiesz, jak używać Spring Boot z MongoDB. Jeśli napotkasz jakiekolwiek trudności, skontaktuj się z sekcją komentarzy, aby uzyskać pomoc. Dziękuję za przeczytanie.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jakie są zasady liczby mnogiej Mongoose (Nodejs)?

  2. TypeError:ObjectId ('') nie jest możliwy do serializacji w formacie JSON

  3. Jaka jest różnica między MongoTemplate i MongoRepository firmy Spring Data?

  4. Przewodnik po zapytaniach w Spring Data MongoDB

  5. Jak zainstalować MongoDB 4.2 na systemach RedHat/CentOS 7?