Pierwsze kroki z samouczkiem MongoDB i Java – Crud
Możesz ustawić com.MongoDB.WriteConcern Propert, której płyta MongootemeM będzie używać do operacji zapisu, jeśli nie została jeszcze określona przez sterownik na wyższym poziomie, na przykład com.MongoDB.Mongo. Jeśli właściwość WriteConcern Mongootemplate nie zostanie ustawiona, będzie domyślnie na jednym zestawie w DB lub ustawieniu kolekcji kierowcy MongoDB.
Streszczenie
W tym samouczku zbadamy, jak zacząć z Mongoodb i Javą. Omówimy podstawowe operacje CRUD (Utwórz, odczyt, aktualizuj, usuń) za pomocą sterownika Java MongoDB i Spring Data MongoDB.
Kluczowe punkty:
- Obsługa MongoDB dla Java obejmuje szeroką gamę funkcji.
- Wiosna zapewnia obsługę konfiguracji MongoDB za pomocą klas @Configuration opartych na Javie lub przestrzeni nazw XML.
- Klasa Mongootemplate jest pomocnym narzędziem do wykonywania wspólnych operacji MongoDB i mapowania obiektów między dokumentami i pojos.
- Obsługiwana jest tłumaczenie wyjątku na przenośną hierarchię wyjątków dostępu do danych.
- Spring’s Conversion Service integruje się z bogatym mapowaniem obiektów MongoDB.
- Metadane mapowania oparte na adnotacji są dostępne i można je rozszerzyć, aby obsługiwać inne formaty.
- Obsługiwane są trwałość i mapowanie zdarzeń cyklu życia.
- Zapytane są zapytanie, kryteria i DSL oparte na Javie.
- Obsługiwana jest automatyczna implementacja interfejsów repozytorium, w tym niestandardowe metody wyszukiwania.
- Integracja QueryDsl umożliwia bezpieczne zapytania.
- Trwałość w sklepie jest obsługiwana, umożliwiając utrzymanie/pobieranie jednostek JPA za pomocą MongoDB.
- Log4J Log Appender jest podawany do integracji MongoDB.
- Integracja geoprzestrzenna jest dostępna do pracy z danymi geoprzestrzennymi.
Pytania:
- P1: Jakie funkcje obsługuje MongoDB dla Java?
- Q2: Jak możemy skonfigurować MongoDB wiosną?
- P3: Do czego służy klasa Mongootemplate?
- Q4: W jaki sposób sprężyna radzi sobie z wyjątkami w operacjach MongoDB?
- P5: Czy integracja MongoDB z mapowaniem obiektów wsparcia sprężynowego?
- P6: Czy MongoDB może obsługiwać inne formaty metadanych?
- Q7: Czy MongoDB wspiera trwałość i mapowanie zdarzeń cyklu życia?
- P8: Jaka jest zaleta korzystania z zapytania, kryteriów i aktualizacji DSL opartego na Javie w MongoDB?
- P9: Czy sprężyna może automatycznie zaimplementować niestandardowe metody wyszukiwania w interfejsach repozytorium?
- P10: Jaka jest korzyść z integracji Querydsl w MongoDB?
- Q11: można użyć MongoDB do trwałości w sklepie?
- Q12: Czy MongoDB zapewnia log4J Log Appender?
- Q13: Czy MongoDB obsługuje dane geoprzestrzenne?
A1: Obsługa MongoDB dla Java obejmuje szeroki zakres funkcji, takich jak obsługa konfiguracji wiosennej, mapowanie obiektów, tłumaczenie wyjątków i wiele innych.
A2: MongoDB można skonfigurować wiosną za pomocą klas @Configuration opartych na Javie lub przestrzeni nazw XML.
A3: Klasa Mongootemplate to klasa pomocnicza, która zwiększa wydajność poprzez wykonywanie wspólnych operacji MongoDB i dostarczanie mapowania obiektów między dokumentami i pojos.
A4: Spring przekłada wyjątki na przenośną hierarchię wyjątków dostępu do danych.
A5: Tak, integracja MongoDB ze sprężyną obejmuje bogate w funkcje mapowanie obiektów zintegrowane z usługą konwersji Spring.
A6: Tak, metadane mapowania oparte na adnotacji w MongoDB można rozszerzyć, aby obsługiwać inne formaty metadanych.
A7: Tak, MongoDB obsługuje wytrwałość i mapowanie zdarzeń cyklu życia.
A8: Zapytanie, kryteria i aktualizacja Java DSL zapewniają bardziej bezpieczny i wygodny sposób budowania zapytań i aktualizacji operacji w MongoDB.
A9: Tak, Spring może automatycznie wdrażać niestandardowe metody wyszukiwania w interfejsach repozytorium.
A10: Integracja Querydsl w MongoDB umożliwia zapytania bezpieczne typu.
A11: Tak, MongoDB obsługuje wytrwałość w sklepie, umożliwiając utrzymanie/pobieranie jednostek JPA za pomocą MongoDB.
A12: Tak, MongoDB zapewnia log4J Appender do integracji z log4j.
A13: Tak, MongoDB zapewnia integrację do pracy z danymi geoprzestrzennymi.
Rozpoczęcie pracy
Aby zacząć od wsparcia Spring MongoDB, będziesz potrzebować MongoDB 1.4 lub wyższe i Java SE 5 lub więcej. Zaleca się użycie najnowszej wersji produkcyjnej (2.0.x od tego pisma).
Wykonaj następujące kroki, aby skonfigurować środowisko pracy:
- Skonfiguruj działający serwer MongoDB. Instrukcje dotyczące rozpoczęcia instancji MongoDB można znaleźć w przewodniku Szybkiego Start MongoDB.
- Utwórz wiosenny projekt w STS (Spring Tool Suite) lub w dowolnym innym zintegrowanym środowisku programistycznym (IDE).
- Dołącz zależność MongoDB danych Spring Data w POM projektu.plik XML:
- Upewnij się, że masz właściwą wersję sprężyny określonej w POM.XML:
- Dodaj repozytorium Milestone Spring do POM.XML:
- Ustaw poziom rejestrowania log4J na debugowanie w log4J.Plik właściwości:
- Utwórz klasę prostej osoby, aby się utrzymywać:
- Utwórz główną aplikację do uruchomienia:
<zależność> <Identyfikator grupy>org.SpringFramework.dane</Identyfikator grupy> <Artefaktyd>Spring-Data-MongoDB</Artefaktyd> <wersja>1.1.0.UWOLNIENIE</wersja> </zależność>
<nieruchomości> <wiosna.wersja>3.1.2.UWOLNIENIE</wiosna.wersja> </nieruchomości>
<Repozytoria> <magazyn> <ID>Spring-Milestone</ID> <nazwa>Spring Maven Milestone Repository</nazwa> <URL>http: // repo.Springsource.org/libs-milestone</URL> </magazyn> </repozytoria>
log4j.Kategoria.org.SpringFramework.dane.dokument.MongoDB = debugowanie log4j.Appender.Stdout.układ.KonwersjaPattern = %d %5p %40.40C:%4L -%m%n
pakiet org.wiosna.MongoDB.przykład; Osoba klasy publicznej { Private String Id; Prywatna nazwa ciągu; Prywatny wiek; osobę publiczną (nazwa ciągu, int wiek) { Ten.Nazwa = nazwa; Ten.wiek = wiek; } public String getId () { Zwrot; } Public String getName () { Nazwa powrotu; } public int getage () { Wiek powrotu; } @Nadpisanie public String ToString () { zwróć „osobę [id =” + id + ”, name =" + name + ", wiek =" + wiek + "]"; } }
pakiet org.wiosna.MongoDB.przykład; Importuj Org Statyczny.SpringFramework.dane.MongoDB.rdzeń.zapytanie.Kryteria.Gdzie; import org.Apache.lud.Logowanie.Dziennik; import org.Apache.lud.Logowanie.Logatfactory; import org.SpringFramework.dane.MongoDB.rdzeń.Mongooperations; import org.SpringFramework.dane.MongoDB.rdzeń.Mongootemplate; import org.SpringFramework.dane.MongoDB.rdzeń.zapytanie.Zapytanie; import com.MongoDB.Mongo; Klasa publiczna Mongoapp { Prywatny statyczny dziennik końcowy = logatFactory.GetLog (Mongoapp.klasa); public static void main (string [] args) rzuca wyjątek { Mongooperations Mongoops = new Mongootemplate (new Mongo (), „baza danych”); Mongoops.wstaw (nowa osoba („Joe”, 34)); dziennik.Informacje (Mongoops.FindOne (nowe zapytanie (gdzie („nazwa”).jest („Joe”), osoba.klasa)); } }
Pierwsze kroki z samouczkiem MongoDB i Java – Crud
Możesz ustawić com.MongoDB.WriteConcern Propert, której płyta MongootemeM będzie używać do operacji zapisu, jeśli nie została jeszcze określona przez sterownik na wyższym poziomie, na przykład com.MongoDB.Mongo . Jeśli właściwość WriteConcern Mongootemplate nie zostanie ustawiona, będzie domyślnie na jednym zestawie w DB lub ustawieniu kolekcji kierowcy MongoDB.
Czy MongoDB wspiera Java
Obsługa MongoDB zawiera szeroki zakres funkcji, które zostały podsumowane poniżej.
- Obsługa konfiguracji wiosennej za pomocą klas @Configuration opartych na Java lub przestrzeni nazw XML dla instancji sterownika Mongo i zestawów repliki
- Klasa pomocnicza płyt Mongootem, która zwiększa wydajność, wykonując wspólne operacje Mongo. Obejmuje zintegrowane mapowanie obiektów między dokumentami i pojos.
- Tłumaczenie wyjątku na przenośną hierarchię wyjątków dostępu do danych Spring
- Funkcje bogate mapowanie obiektów zintegrowane z usługą konwersji Spring
- Metadane mapowania oparte na adnotacji, ale rozszerzalne w celu obsługi innych formatów metadanych
- Wytrwałość i mapowanie zdarzeń cyklu życia
- Zapytanie, kryteria i aktualizacja DSL oparte na Javie
- Automatyczna implementacja interfejsów repozytorium, w tym obsługa niestandardowych metod wyszukiwania.
- Integracja QueryDsl w celu obsługi zapytań bezpiecznych typu.
- Trwałość w sklepie krzyżowym – wsparcie dla jednostek JPA z pólami przezroczysto utrzymywanymi/odzyskanymi za pomocą MongoDB
- Log4J Log Appender
- Integracja geoprzestrzenna
W przypadku większości zadań znajdziesz się w obsłudze Mongootemplate lub repozytorium, które zarówno wykorzystują funkcję mapowania bogatego. Mongootemplate to miejsce, w którym można szukać dostępu do funkcji, takich jak liczniki przyrostowe lub operacje CRUD ad hoc. Mongootemplate zapewnia również metody wywołania zwrotnego, dzięki czemu łatwo jest zdobyć artefakty API na niskim poziomie, takie jak org.Mongo.Db do komunikowania się bezpośrednio z MongoDB. Celem konwencji nazewnictwa w różnych artefaktach API jest kopiowanie tych w bazowym sterowniku Java MongoDB, abyś mógł łatwo mapować swoją wiedzę na API Spring.
5.1 Pierwsze kroki
Wsparcie Spring MongoDB wymaga MongoDB 1.4 lub wyższe i Java SE 5 lub więcej. Najnowsza wersja produkcyjna (2.0.x od tego pisma) jest zalecane. Łatwym sposobem na konfigurowanie środowiska pracy jest stworzenie wiosennego projektu w STS.
Najpierw musisz skonfigurować działający serwer MongoDB. W celu wyjaśnienia, jak uruchomić instancję MongoDB, zapoznaj się z instancją MongoDB Quick. Po zainstalowaniu uruchomienie MongoDB jest zazwyczaj kwestią wykonania następującego polecenia: Mongo_Home/Bin/Mongood
Aby utworzyć wiosenny projekt w STS, przejdź do pliku -> nowy -> Projekt szablonu sprężyny -> Prosty Spring Utility Project -> Naciśnij Tak, gdy jest wyświetlany monit. Następnie wprowadź projekt i nazwę pakietu, taka jak org.wiosna.MongoDB.przykład.
Następnie dodaj następujące do POM.Sekcja zależności XML.
org.SpringFramework.dane Spring-Data-MongoDB 1.1.0.UWOLNIENIE
Zmień także wersję Spring w POM.xml
3.1.2.UWOLNIENIE
Będziesz także musiał dodać lokalizację repozytorium Milestone dla Maven do POM.XML, który jest na tym samym poziomie twojego elementu
Spring-Milestone Spring Maven Milestone Repository http: // repo.Springsource.org/libs-milestone
Repozytorium jest również dostępne tutaj.
Możesz także ustawić poziom rejestrowania na debugowanie, aby zobaczyć dodatkowe informacje, edytuj log4J.plik właściwościowy do posiadania
log4j.Kategoria.org.SpringFramework.dane.dokument.MongoDB = debug log4J.Appender.Stdout.układ.KonwersjaPattern = %d %5p %40.40C:%4L -%m%n
Utwórz prostą klasę osoby, aby się utrzymywać
pakiet org.wiosna.MongoDB.przykład; publiczny klasa Osoba < prywatny Identyfikator ciągu; prywatny Nazwa ciągu; prywatny int wiek; publiczny Osoba (nazwa ciągu, int wiek) < Ten.Nazwa = nazwa; Ten.wiek = wiek; > publiczny String getId () < powrót ID; > publiczny String getName () < powrót nazwa; > publiczny int getage () < powrót wiek; > @Nadpisanie publiczny String ToString () < powrót „Osoba [id hl-string”> ”, nazwa hl-string"> ", wiek hl-string"> "]"; >>
I główna aplikacja do uruchomienia
pakiet org.wiosna.MongoDB.przykład; import statyczny org.SpringFramework.dane.MongoDB.rdzeń.zapytanie.Kryteria.Gdzie; import org.Apache.lud.Logowanie.Dziennik; import org.Apache.lud.Logowanie.Logatfactory; import org.SpringFramework.dane.MongoDB.rdzeń.Mongooperations; import org.SpringFramework.dane.MongoDB.rdzeń.Mongootemplate; import org.SpringFramework.dane.MongoDB.rdzeń.zapytanie.Zapytanie; import com.MongoDB.Mongo; publiczny klasa Mongoapp < prywatny statyczny finał Log log = logactory.GetLog (Mongoapp.klasa); publiczny statyczny próżnia Main (String [] args) rzuty Wyjątek < MongoOperations mongoOps = nowy Płyta mongobła (nowy Mongo (), "Baza danych"); Mongoops.wstawić(nowy Osoba(„Joe”, 34)); dziennik.Informacje (Mongoops.Znajdź (nowy Zapytanie (gdzie ("nazwa").Jest(„Joe”)), Osoba.klasa)); Mongoops.kroplowanie ("osoba"); >>
To wytworzy następujące dane wyjściowe
10: 01: 32 062 DEBUGU.MongopersistentEntityIndexCreator: 80 - Analiza klasy klasy klasy.wiosna.przykład.Osoba do informacji o indeksie. 10: 01: 32,265 debugowanie Ramework.dane.MongoDB.rdzeń.Mongootemplate: 631 - Włóż DBObject zawierające pola: [_class, wiek, nazwa] W kolekcji: Osoba 10: 01: 32 765 Debugowanie Ramework.dane.MongoDB.rdzeń.Mongootemplate: 1243 - FindOne za pomocą zapytania: < "name" : "Joe">w db.Kolekcja: baza danych.Osoba 10: 01: 32 953 Info org.wiosna.MongoDB.przykład.Mongoapp: 25 - osoba [id = 4ddbba3c0be56b7e1b210166, nazwa = Joe, wiek = 34] 10: 01: 32 984 debugowanie Ramework.dane.MongoDB.rdzeń.Mongootemplate: 375 - Zbiórka [baza danych.osoba]
Nawet w tym prostym przykładzie jest niewiele rzeczy, na które należy zwrócić uwagę
- Możesz utworzyć instancję centralnej klasy pomocniczej Spring Mongo, Mongootemplate, używając standardowego COM.MongoDB.Obiekt Mongo i nazwa bazy danych do użycia.
- Mapper działa przeciwko standardowym obiektom POJO bez potrzeby dodatkowych metadanych (choć możesz opcjonalnie podać te informacje. Spójrz tutaj.).
- Konwencje są używane do obsługi pola ID, przekształcając je tak, aby był obiektywem, gdy jest przechowywany w bazie danych.
- Konwencje mapowania mogą korzystać z dostępu do terenu. Zauważ, że klasa osoby ma tylko zdobyte.
- Jeśli nazwy argumentów konstruktora pasują do nazwy pola zapisanego dokumentu, zostaną one użyte do tworzenia instancji obiektu
5.2 repozytorium przykładów
Istnieje repozytorium GitHub z kilkoma przykładami, z którymi można pobrać i bawić się, aby poczuć, jak działa biblioteka.
5.3 Łączenie z MongoDB ze sprężyną
Jednym z pierwszych zadań podczas korzystania z MongoDB i Spring jest utworzenie com.MongoDB.Obiekt Mongo za pomocą pojemnika MKOl. Istnieją dwa główne sposoby na to, używając metadanych fasoli na bazie Java lub metadanych fasoli XML. Są one omówione w poniższych sekcjach.
Dla tych, którzy nie są zaznajomieni z konfiguracją pojemnika sprężynowego za pomocą metadanych fasoli na bazie Java zamiast metadanych opartych na XML, zobacz wprowadzenie wysokiego poziomu w dokumentach referencyjnych tutaj, a także szczegółową dokumentację tutaj.
5.3.1 Rejestracja instancji Mongo za pomocą metadanych opartych na Javie
Przykład używania metadanych fasoli na bazie Java do zarejestrowania instancji com.MongoDB.Mongo pokazano poniżej
Przykład 5.1. Rejestracja com.MongoDB.Obiekt Mongo za pomocą metadanych fasoli na bazie Java
@Konfiguracja publiczny klasa AppConfig < / * * Użyj standardowego interfejsu API sterownika Mongo, aby utworzyć com.MongoDB.Instancja Mongo. */ publiczny @Fasola Mongo Mongo () rzuty Nieznany HostException < powrót nowy Mongo ("Lokalny Gospodarz"); >>
To podejście pozwala użyć standardowej com.MongoDB.Mongo API, do którego możesz być używany, ale także zanieczyszcza kod za pomocą wyjątku sprawdzonego. Zastosowanie zaznaczonego wyjątku nie jest pożądane, ponieważ metadane fasoli na bazie Java wykorzystuje metody jako środki do ustawiania zależności obiektów, dzięki czemu kod wywołania zagracony.
Alternatywą jest zarejestrowanie instancji COM.MongoDB.Instancja Mongo z pojemnikiem przy użyciu wiosennego Mongofactorybean . W porównaniu z instancją com.MongoDB.Mongo Instance Bezpośrednio podejście Factorybean nie wywiera sprawdzonego wyjątku i ma dodatkową zaletę, że dostarcza kontenerowi z implementacją Exceptiontranslator, która tłumaczy wyjątki MongoDB na wyjątki w przenośnej hierarchii DataAccessException wiosny dla klas dostępu do danych zupełnie uwzględniony. Ta hierarchia i użycie @Repository opisano w funkcjach wsparcia DAO Spring.
Przykład metadanych fasoli na bazie Java, który obsługuje tłumaczenie wyjątku na klasach @Repository z adnotacjami, pokazano poniżej:
Przykład 5.2. Rejestracja com.MongoDB.Obiekt Mongo przy użyciu wiosennego Mongofactorybean i umożliwiający obsługę tłumaczeń wyjątków Spring
@Konfiguracja publiczny klasa AppConfig < / * * Fabryczna fasola, która tworzy com.MongoDB.Instancja Mongo */ publiczny @Fasola Mongofactorybean Mongo () < MongoFactoryBean mongo = nowy Mongofactorybean (); Mongo.Sethost ("Lokalny Gospodarz"); powrót Mongo; >>
Aby uzyskać dostęp do COM.MongoDB.Obiekt Mongo stworzony przez Mongofactorybean w innych @Configuation lub własnych klas użyj pola „Private @Autowired Mongo;”.
5.3.2 Rejestracja instancji Mongo za pomocą metadanych opartych na XML
Podczas gdy możesz użyć tradycyjnej przestrzeni nazw XML Spring, aby zarejestrować instancję COM.MongoDB.Mongo z pojemnikiem, XML może być dość gadaty, ponieważ jest to ogólny cel. Przestrzenie nazw XML są lepszą alternatywą dla konfigurowania powszechnie używanych obiektów, takich jak instancja Mongo. Slojki przestrzeni nazw Mongo, aby utworzyć lokalizację serwera instancji Mongo, zestawy repliki i opcje.
Aby użyć elementów przestrzeni nazw Mongo, musisz odwołać się do schematu Mongo:
Przykład 5.3. Schemat XML do konfiguracji MongoDB
xmlns=„http: // www.SpringFramework.org/schemat/fasola " XMLNS: XSI=„http: // www.W3.org/2001/xmlschema-instance " xmlns: kontekst=„http: // www.SpringFramework.org/schemat/kontekst " XMLNS: Mongo=„http: // www.SpringFramework.org/schemat/data/mongo " XSI: Schemalokacja= „http: // www.SpringFramework.org/schema/kontekst http: // www.SpringFramework.org/schema/kontekst/sprężyna-kontekst-3.0.xsd http: // www.SpringFramework.org/schema/data/mongo http: // www.SpringFramework.org/schemat/data/Mongo/Spring-Mongo-1.0.xsd http: // www.SpringFramework.org/schema/fasola http: // www.SpringFramework.org/schemat/fasola/sprężyna-3.0.xsd ">
Bardziej zaawansowana konfiguracja z Mongooptions pokazano poniżej (Uwaga Nie są to wartości)
Przykład 5.4. Schemat XML do skonfigurowania com.MongoDB.Obiekt Mongo z Mongooptions
gospodarz="Lokalny Gospodarz" Port=„27017”> Połączenia na host=„8” Wątki-allowed-to-block-for-Connection-Multiplier=„4” Connect Timeout=„1000” Max-Wait Time=„1500>” Auto-Connect-Retry="PRAWDA" Alive-keep gniazd="PRAWDA" Timeout gniazda=„1500” niewolnik="PRAWDA" numer zapisu=„1” czas na czas=„0” Write-Fsync="PRAWDA"/>
Konfiguracja przy użyciu zestawów repliki pokazano poniżej.
Przykład 5.5. Schemat XML do konfiguracji com.MongoDB.Obiekt Mongo z zestawami repliki
ID=„Replicasetmongo” Zestaw repliki="127.0.0.1: 27017, Localhost: 27018 ”/>
5.3.3 Interfejs MongoDBFactory
Podczas gdy com.MongoDB.Mongo jest punktem wejścia do interfejsu API sterownika MongoDB, łącząc się z określoną instancją bazy danych MongoDB wymaga dodatkowych informacji, takich jak nazwa bazy danych oraz opcjonalna nazwa użytkownika i hasło. Dzięki tym informacjom możesz uzyskać com.MongoDB.Obiekt DB i dostęp do wszystkich funkcji określonej instancji bazy danych MongoDB. Wiosna zapewnia org.SpringFramework.dane.MongoDB.rdzeń.Interfejs MongoDBFactory pokazany poniżej do łączności Bootstrap z bazą danych.
publiczny interfejs MongoDBFactory < DB getDb() rzuty DataCressException; Db getdb (string dbname) rzuty DataCressException; >
Poniższe sekcje pokazują, w jaki sposób możesz użyć Contiainer z Java lub metadaną XML do skonfigurowania instancji interfejsu MongoDBFactory. Z kolei możesz użyć instancji MongoDBFactory, aby skonfigurować MongoTemplate.
Klasa org.SpringFramework.dane.MongoDB.rdzeń.SimpleMongoDBactory zapewnia narzędzia interfejs MongoDBFactory i jest tworzony ze standardowym COM.MongoDB.Instancja Mongo, nazwa bazy danych i opcjonalna org.SpringFramework.dane.uwierzytelnianie.Argument konstruktor UserCredentials.
Zamiast używać kontenera IOC do utworzenia instancji Mongootemplate, możesz po prostu użyć ich w standardowym kodzie Java, jak pokazano poniżej.
publiczny klasa Mongoapp < prywatny statyczny finał Log log = logactory.GetLog (Mongoapp.klasa); publiczny statyczny próżnia Main (String [] args) rzuty Wyjątek < MongoOperations mongoOps = nowy Płyta mongobła (Nowy SimpleMongoDBactory (nowy Mongo (), „Baza danych”)); Mongoops.wstawić(nowy Osoba(„Joe”, 34)); dziennik.Informacje (Mongoops.Znajdź (nowy Zapytanie (gdzie ("nazwa").Jest(„Joe”)), Osoba.klasa)); Mongoops.kroplowanie ("osoba"); >>
Kod BOLD podkreśla użycie SimpleMongoDBFactory i jest jedyną różnicą między listą pokazaną w sekcji Uruchomienie.
5.3.4 Rejestracja instancji MongoDBFactory za pomocą metadanych opartych na Javie
Aby zarejestrować instancję MongoDBFactory w kontenerze, piszesz kod podobnie jak podświetlony w poprzednim listy kodów. Prosty przykład pokazano poniżej
@Konfiguracja publiczny klasa Mongokonfiguration < publiczny @Fasola MongoDBactory MongoDBactory () rzuty Wyjątek < powrót nowy SimpleMongoDBactory (nowy Mongo (), "Baza danych"); >>
Aby zdefiniować nazwę użytkownika i hasło Utwórz instancję org.SpringFramework.dane.uwierzytelnianie.UserCredentials i przekazuj go do konstruktora, jak pokazano poniżej. Ta lista pokazuje również za pomocą rejestru MongoDBactory instancję Mongootemplate z kontenerem.
@Konfiguracja publiczny klasa Mongokonfiguration < publiczny @Fasola MongoDBactory MongoDBactory () rzuty Wyjątek < UserCredentials userCredentials = nowy Poświadczenia użytkownika(„Joe”, "sekret"); powrót nowy SimpleMongoDBactory (nowy Mongo (), "Baza danych", Poświadczenia użytkownika); > publiczny @Fasola Mongootemplate Mongootemplate () rzuty Wyjątek < powrót nowy Mongootemplate (MongoDBactory ()); >>
5.3.5 Rejestracja instancji MongoDBFactory za pomocą metadanych opartych na XML
Przestrzeń nazw Mongo stanowi konwencjonalny sposób na stworzenie prostegoFactory w porównaniu do korzystania z przestrzeni nazw. Proste użycie jest pokazane poniżej
dbname="Baza danych">
W powyższym przykładzie com.MongoDB.Instancja Mongo jest tworzona przy użyciu domyślnego hosta i numeru portu. SimpleMongoDBFactory zarejestrowany w kontenerze jest identyfikowany przez identyfikator „MongoDBactory”, chyba że określono wartość atrybutu identyfikatora.
Możesz także dostarczyć hosta i portu do podstawowego com.MongoDB.Instancja Mongo, jak pokazano poniżej, oprócz nazwy użytkownika i hasła do bazy danych.
ID=„Inny MongoDBFactory” gospodarz="Lokalny Gospodarz" Port=„27017” dbname="Baza danych" nazwa użytkownika=„Joe” hasło="sekret"/>
Jeśli chcesz skonfigurować dodatkowe opcje na com.MongoDB.Instancja Mongo, która jest używana do utworzenia prostokacta. Aby pokazać kolejny wspólny wzór użytkowania, ta lista pokazuje użycie właściwości zastępczej do parametryzacji konfiguracji i tworzenia Mongootemplate .
Lokalizacja=„ClassPath:/com/myApp/MongoDB/config/mongo.nieruchomości"/> gospodarz=„$” Port=„$”> Połączenia na host=„$” Wątki-allowed-to-block-for-Connection-Multiplier=„$” Connect Timeout=„$” Max-Wait Time=„$” Auto-Connect-Retry=„$” Alive-keep gniazd=„$” Timeout gniazda=„$” niewolnik=„$” numer zapisu=„1” czas na czas=„0” Write-Fsync="PRAWDA"/> dbname="Baza danych" Mongo-Ref=„Mongo”/> ID=„Inny MongoMonTemplate” klasa=„Org.SpringFramework.dane.MongoDB.rdzeń.Płyta Mongootem ”> nazwa=„MongoDBFactory” Ref=„MongoDBFactory”/>
5.4 Wprowadzenie do płyty Mongootem
Klasy Mongootemplate, znajdujące się w pakiecie org.SpringFramework.dane.dokument.MongoDB, jest centralną klasą wiosennego wsparcia MongoDB, który jest bogatym zestawem funkcji do interakcji z bazą danych. Szablon oferuje operacje wygody do tworzenia, aktualizacji, usuwania i zapytania do dokumentów MongoDB i zapewnia mapowanie między obiektami domeny a dokumentami MongoDB.
Po skonfigurowaniu płyta MONGOTEM jest bezpieczna do wątków i może być ponownie wykorzystywana w wielu instancjach.
Mapowanie między dokumentami MongoDB a klasami domen odbywa się poprzez przekazanie do implementacji interfejsu Mongoconverter . Wiosna zapewnia dwie implementacje, SimpleMappapingConverter i MongomappingConverter, ale możesz również napisać własny konwerter. Więcej informacji można znaleźć w sekcji o Mongovoverters.
Klasa Mongootemplate implementuje interfejs MonGooperations . W takim możliwie metody MonGooperations są nazwane po metodach dostępnych w obiekcie kolekcji sterowników MongoDB, aby uczynić interfejs API istniejących programistów MongoDB, którzy są przyzwyczajeni do interfejsu API sterownika. Na przykład znajdziesz metody takie jak „Znajdź”, „FindandModify”, „FindOne”, „Insert”, „Usuń”, „Save”, „Update” i „UpdateMulti”. Celem projektowym było ułatwienie przejścia między użyciem podstawowego kierowcy MongoDB a MonGooperations . Główną różnicą między dwoma interfejsami API jest to, że Mongperations można przekazać obiekty domeny zamiast DBObject i istnieją płynne interfejsy API dla zapytania, kryteriów i aktualizacji zamiast zaludnienia dbobject w celu określenia parametrów dla tych operiosn.
Preferowanym sposobem odniesienia się do operacji w instancji MongoTemplate są za pośrednictwem interfejsu Mongooperations .
Domyślna implementacja konwertera używana przez Mongootemplate to MongoMappingConverter. Podczas gdy MongoMappingConverter może skorzystać z dodatkowych metadanych do określania mapowania obiektów na dokumenty, jest również zdolne do konwersji obiektów, które nie zawierają metadanych dodatkowych, używając niektórych konwencji do mapowania identyfikatorów i nazw kolekcji. Te konwencje, a także stosowanie adnotacji mapowania są wyjaśnione w rozdziale mapowania.
W M2 SimpleMappapingConverter był domyślny, a ta klasa jest teraz przestarzała, ponieważ jego funkcjonalność została podjęta przez MongomappingConverter.
Kolejną centralną cechą Mongootemplate jest tłumaczenie wyjątków wyrzuconych w sterowniku MongoDB Java na hierarchię wyjątków przenośnych dostępu do danych. Więcej informacji można znaleźć w sekcji o tłumaczeniu wyjątków.
Chociaż istnieje wiele metod wygody na płycie Mongootemplate, które pomogą Ci łatwo wykonywać wspólne zadania, jeśli powinieneś uzyskać dostęp do interfejsu API sterownika MongoDB, aby uzyskać dostęp do funkcji, która nie jest wyraźnie ujawniona przez płyt Mongootem. Wykonanie zwrotne zawierają odniesienie do com.MongoDB.Kolekcja lub com.MongoDB.Obiekt db. Więcej informacji można znaleźć w sekcji oddzwanianie do wykonania.
Teraz spójrzmy na przykłady pracy z płytą Mongootem w kontekście wiosennego pojemnika.
5.4. Instating Mongootemplate
Możesz użyć Java, aby utworzyć i zarejestrować instancję Mongootemplate, jak pokazano poniżej.
Przykład 5.6. Rejestracja com.MongoDB.Obiekt Mongo i włączenie obsługi tłumaczeń wyjątków Spring
@Konfiguracja publiczny klasa AppConfig < publiczny @Fasola Mongo Mongo () rzuty Wyjątek < powrót nowy Mongo ("Lokalny Gospodarz"); > publiczny @Fasola Mongootemplate Mongootemplate () rzuty Wyjątek < powrót nowy Mongootemplate (Mongo (), „MyDatabaza”); >>
Istnieje kilka przeciążonych konstruktorów Mongootemplate. To są
- Mongootemplate (Mongo Mongo, String Databasename) – bierze com.MongoDB.Obiekt Mongo i domyślna nazwa bazy danych, którą należy działać.
- Mongootemplate (Mongo Mongo, String Databasename, userCredentials UserCredentials) – Dodaje nazwę użytkownika i hasło do uwierzytelniania z bazą danych.
- Mongootemplate (MongoDBFactory MongoDBactory) – przyjmuje obiekt MongoDBFactory, który zawierał com.MongoDB.Obiekt Mongo, nazwa bazy danych oraz nazwa użytkownika i hasło.
- Mongootemplate (MongoDBactory MongoDBactory, Mongoconverter Mongoconverter) – Dodaje monongonverter do mapowania.
Możesz także skonfigurować płytę Mongootems za pomocą schematu XML Spring.
"Lokalny Gospodarz" port =„27017”/>„Mongootemplate” klasa=„Org.SpringFramework.dane.MongoDB.rdzeń.Płyta Mongootem ”> „Mongo”/> „nazwa danych” wartość ="geoprzestrzenny"/>
Inne opcjonalne właściwości, które możesz ustawić podczas tworzenia płyty mongootem .
Preferowanym sposobem odniesienia się do operacji w instancji MongoTemplate są za pośrednictwem interfejsu Mongooperations .
Polityka pisarza
Kiedy w rozwoju jest bardzo przydatne, aby zarejestrować lub rzucić wyjątek, jeśli com.MongoDB.WriteSult powrócił z dowolnej operacji MongoDB zawiera błąd. Często często zapomina o tym podczas rozwoju, a następnie kończyć się aplikacją, która wygląda tak, jakby działała z powodzeniem, ale w rzeczywistości baza danych nie została zmodyfikowana zgodnie z twoimi oczekiwaniami. Ustaw właściwość pisarza MonGotemplate na enum z następującymi wartościami, dziennikiem, wyjątkiem lub brakiem, aby zarejestrować błąd, rzut i wyjątek lub nic nie rób nic. Domyślnie jest użycie wartości pisarza.
WriteConcern
Możesz ustawić com.MongoDB.WriteConcern Propert, której płyta MongootemeM będzie używać do operacji zapisu, jeśli nie została jeszcze określona przez sterownik na wyższym poziomie, na przykład com.MongoDB.Mongo . Jeśli właściwość WriteConcern Mongootemplate nie zostanie ustawiona, będzie domyślnie na jednym zestawie w DB lub ustawieniu kolekcji kierowcy MongoDB.
WriteConcernResolver
Aby uzyskać bardziej zaawansowane przypadki, w których chcesz ustawić różne wartości WriteConcern na zasadzie naoperacji (w celu usunięcia, aktualizacji, wstawiania i zapisu), interfejs strategii o nazwie WriteConcernResolver można skonfigurować na MongoTemplate . Ponieważ Mongootemplate służy do utrzymywania się poji, writeConcernResolver pozwala tworzyć zasady, które mogą mapować określoną klasę POJO na wartość pisarza. Interfejs WriteConcernResolver pokazano poniżej.
publiczny interfejs WriteConcernResolver
Przekazany argument, Mongoction, jest tym, czego używasz do ustalenia wartości pisarza do użycia lub do użycia wartości samego szablonu jako domyślnego. Mongoction zawiera nazwę kolekcji, na którą jest napisana Java.Lang.Klasa POJO, konwertowany dbObject, a także operacja jako wyliczenie (Mongoactionoperation: Usuń, aktualizuj, wstaw, wstaw, zapisz) i kilka innych informacji o kontekstu. Na przykład,
Klasa prywatna MyAppWriteConcernResolver implementuje WriteConcernResolver < public WriteConcern resolve(MongoAction action) < if (action.getEntityClass().getSimpleName().contains("Audit")) < return WriteConcern.NONE; >inaczej if (akcja.getEntityClass ().getSimplename ().zawiera („metadane”)) < return WriteConcern.JOURNAL_SAFE; >Return Action.getDefaultWriteConcern (); >>
5.5 Oszczędzanie, aktualizacja i usuwanie dokumentów
MonGotemplate zapewnia prosty sposób zapisywania, aktualizacji i usuwania obiektów domeny i mapowania tych obiektów do dokumentów przechowywanych w MongoDB.
Biorąc pod uwagę prostą klasę, taką jak osoba
publiczny klasa Osoba < prywatny Identyfikator ciągu; prywatny Nazwa ciągu; prywatny int wiek; publiczny Osoba (nazwa ciągu, int wiek) < Ten.Nazwa = nazwa; Ten.wiek = wiek; > publiczny String getId () < powrót ID; > publiczny String getName () < powrót nazwa; > publiczny int getage () < powrót wiek; > @Nadpisanie publiczny String ToString () < powrót „Osoba [id hl-string”> ”, nazwa hl-string"> ", wiek hl-string"> "]"; >>
Możesz zapisać, zaktualizować i usunąć obiekt, jak pokazano poniżej.
Mongooperations to interfejs, który implementuje Mongootemplate.
pakiet org.wiosna.przykład; import statyczny org.SpringFramework.dane.MongoDB.rdzeń.zapytanie.Kryteria.Gdzie; import statyczny org.SpringFramework.dane.MongoDB.rdzeń.zapytanie.Aktualizacja.aktualizacja; import statyczny org.SpringFramework.dane.MongoDB.rdzeń.zapytanie.Zapytanie.zapytanie; import Jawa.Util.Lista; import org.Apache.lud.Logowanie.Dziennik; import org.Apache.lud.Logowanie.Logatfactory; import org.SpringFramework.dane.MongoDB.rdzeń.Mongooperations; import org.SpringFramework.dane.MongoDB.rdzeń.Mongootemplate; import org.SpringFramework.dane.MongoDB.rdzeń.SimpleMongoDBactory; import com.MongoDB.Mongo; publiczny klasa Mongoapp < prywatny statyczny finał Log log = logactory.GetLog (Mongoapp.klasa); publiczny statyczny próżnia Main (String [] args) rzuty Wyjątek < MongoOperations mongoOps = nowy Płyta mongobła (nowy SimpleMongoDBactory (nowy Mongo (), "Baza danych")); Osoba p = nowy Osoba(„Joe”, 34); // Wstaw jest używany do początkowego przechowywania obiektu w bazie danych. Mongoops.wstaw (P); dziennik.informacje ("Wstawić: " + P); // Znajdować p = Mongoops.FindById (str.getId (), osoba.klasa); dziennik.informacje ("Znaleziony: " + P); // Aktualizacja Mongoops.aktualizacjaFirst (zapytanie (gdzie ("nazwa").Jest(„Joe”)), aktualizacja("wiek", 35), Osoba.klasa); p = Mongoops.Findone (zapytanie (gdzie ("nazwa").Jest(„Joe”)), Osoba.klasa); dziennik.informacje („Zaktualizowano:” + P); // Usuwać Mongoops.usuń (p); // Sprawdź, czy usunięcie zadziałało Lista osób = Mongoops.FINDALL (osoba.klasa); dziennik.informacje („Liczba ludzi =:” + ludzie.rozmiar()); Mongoops.Dropcollection (osoba.klasa); >>
Wywołałoby to następujące dane wyjściowe dziennika (w tym wiadomości debugowania z samego Mongootemplate)
Zastosowanie debugowania.MongopersistentEntityIndexCreator: 80 - Analiza klasy klasy klasy.wiosna.przykład.Osoba do informacji o indeksie. Praca debugowania.dane.MongoDB.rdzeń.Mongootemplate: 632 - Włóż DBObject zawierające pola: [_class, wiek, nazwa] W kolekcji: Informacje o osobach org org.wiosna.przykład.MongoApp: 30 - Wstaw: osoba [id = 4ddc6e784ce5b1eba3ceaf5c, nazwa = Joe, wiek = 34] Praca debugowania.dane.MongoDB.rdzeń.Mongootemplate: 1246 - Znajdź za pomocą zapytania: < "_id" : < "$oid" : "4ddc6e784ce5b1eba3ceaf5c">> w db.Kolekcja: baza danych.Informacje o osobie org.wiosna.przykład.Mongoapp: 34 - Znaleziono: osoba [id = 4ddc6e784ce5b1eba3ceaf5c, nazwa = Joe, wiek = 34] Praca debugowania.dane.MongoDB.rdzeń.MONGOTEMPLATE: 778 - Aktualizacja wywołania za pomocą zapytania: < "name" : "Joe">i aktualizacja: < "$set" : < "age" : 35>> W kolekcji: praca debugowania osoby.dane.MongoDB.rdzeń.Mongootemplate: 1246 - Znajdź za pomocą zapytania: < "name" : "Joe">w db.Kolekcja: baza danych.Informacje o osobie org.wiosna.przykład.MongoApp: 39 - zaktualizowany: osoba [id = 4ddc6e784ce5b1eba3ceaf5c, nazwa = Joe, wiek = 35] Praca debugowania.dane.MongoDB.rdzeń.Mongootemplate: 823 - Usuń za pomocą zapytania: < "id" : "4ddc6e784ce5b1eba3ceaf5c">W kolekcji: Informacje o osoby.wiosna.przykład.Mongoapp: 46 - Liczba ludzi =: 0 Praca debugowania.dane.MongoDB.rdzeń.Mongootemplate: 376 - Kolekcja upuszczana [baza danych.osoba]
Wystąpiła niejawna konwersja za pomocą MongoConverter między ciągiem a obiektami jako przechowywaną w bazie danych i rozpoznawanie konwencji nazwy właściwości „id”.
Ten przykład ma pokazać użycie operacji zapisu, aktualizacji i usunięcia na płycie Mongootemplate, a nie wyświetlać złożonej funkcji mapowania
Stynax zapytania użyty w przykładzie jest wyjaśniona bardziej szczegółowo w sekcji Zapytanie dokumentów.
5.5.1 Jak obsługuje pole „_id” w warstwie mapowania
MongoDB wymaga pola „_id” dla wszystkich dokumentów. Jeśli nie podasz go, sterownik przypisuje obiektywu z wygenerowaną wartością. Podczas korzystania z MongomapponConverter istnieją pewne zasady rządzące tym, w jaki sposób nieruchomości z klasy Java są mapowane na to pole „_id”.
Poniżej przedstawiono, jaka właściwość zostanie zmapowana na pole dokumentu „_id”:
- Nieruchomość lub pole z adnotacjami z @ID (org.SpringFramework.dane.adnotacja.Id) zostanie zmapowany na pole „_id”.
- Właściwość lub pole bez adnotacji, ale nazwany identyfikator zostanie zmapowany na pole „_id”.
Poniższe przedstawiono, jaki typ konwersja typu zostanie wykonana na właściwości odwzorowanej na polu dokumentu _id podczas korzystania z mappingMonGoconverter, domyślnie dla MonGotemplate .
- Właściwość ID lub pole zadeklarowane jako ciąg w klasie Java zostanie przekonwertowana na i przechowywane jako obiektyd, jeśli to możliwe . Prawidłowe reguły konwersji są przekazywane do sterownika MongoDB Java. Jeśli nie można go przekonwertować na obiekd, wówczas wartość będzie przechowywana jako ciąg w bazie danych.
- Właściwość ID lub pole zadeklarowane jako bigInteger w klasie Java zostanie przekonwertowana na i przechowywane jako obiektyd za pomocą konwertera sprężynowego .
Jeśli w klasie Java nie ma żadnego pola lub właściwości, wówczas sterownik niejawny plik „_id” zostanie wygenerowany, ale nie jest zmapowany na właściwość lub pole klasy Java.
Podczas zapytania i aktualizacji MongoTemplate użyje konwertera do obsługi konwersji zapytania i aktualizacji obiektów, które odpowiadają powyższym regułom zapisywania dokumentów, aby nazwy i typy pola używane w zapytaniach będą mogły dopasować to, co jest w klasach domeny.
5.5.2 Mapowanie typu
Ponieważ kolekcje MongoDB mogą zawierać dokumenty reprezentujące instancje różnych rodzajów. Świetnym przykładem jest to, że przechowujesz hierarchię klas lub po prostu masz klasę z właściwością obiektu typu . W tym drugim przypadku wartości utrzymane wewnątrz tej właściwości muszą zostać poprawnie odczytane podczas pobierania obiektu. Dlatego potrzebujemy mechanizmu do przechowywania informacji o typach obok rzeczywistego dokumentu.
Aby to osiągnąć, mapingMongoconverter używa abstrakcji monongotypemapper z DefaultMongoPemapper jako główną implementację. Domyślnym zachowaniem jest przechowywanie w pełni kwalifikowanej nazwy klas w _ klasie wewnątrz dokumentu dokumentu najwyższego poziomu, a także dla każdej wartości, jeśli jest to typ złożony i podtyp zadeklarowanego typu właściwości.
Przykład 5.7. Mapowanie typu
publiczny klasa Próbka < Contact value; >publiczny abstrakcyjny klasa Kontakt < … >publiczny klasa Osoba rozszerza Kontakt < … >Próbka próbki = nowy Próbka(); próbka.wartość = nowy Osoba(); Mongootemplate.Save (próbka); < "_klasa" : "com.kulminacja.Próbka", "wartość" : < "_klasa" : "com.kulminacja.Osoba" >>
Jak widać, przechowujemy informacje o rzeczywistych trwałości klasy root, a także dla zagnieżdżonego typu, ponieważ jest to złożone i podtyp kontaktu . Więc jeśli teraz używasz Mongootemplate.FINDALL (obiekt.klasa, „próbka”) jesteśmy w stanie dowiedzieć się, że zapisany dokument będzie przykładową instancją. Jesteśmy również w stanie dowiedzieć się, że właściwość wartości będzie właściwie osobą.
Dostosowywanie mapowania typu
Jeśli chcesz uniknąć zapisywania całej nazwy klasy Java jako informacji o typach, ale raczej lubisz użyć jakiegoś klucza, możesz użyć adnotacji @Typealias na trwałej klasie encji. Jeśli chcesz dostosować mapowanie jeszcze bardziej, spójrz na interfejs typeInformationMapper. Instancję tego interfejsu można skonfigurować w DefaultMongoPeMapper, który można z kolei skonfigurować w MappingMongoConverter .
5.5.3 metody oszczędzania i wkładania dokumentów
Istnieje kilka wygodnych metod na płycie Mongootem do zapisywania i wstawienia obiektów. Aby mieć bardziej drobną kontrolę nad procesem konwersji, możesz zarejestrować konwertera sprężyn za pomocą mapingmongoconverter, na przykład konwertera i konwertera .
Różnica między operacją wkładki i zapisu polega na tym, że operacja zapisu będzie wykonywać wkładkę, jeśli obiekt nie jest jeszcze obecny.
Prostym przypadkiem korzystania z operacji zapisu jest zapisanie POJO. W takim przypadku nazwa kolekcji zostanie określona na podstawie nazwy (nie w pełni wykorzystywanych) klasy. Możesz również wywołać operację zapisu z określoną nazwą kolekcji. Kolekcja do przechowywania obiektu można zastąpić za pomocą metadanych mapowania.
Podczas wstawiania lub zapisywania, jeśli właściwość ID nie jest ustawiona, założenie jest, że jej wartość zostanie autogenerowana przez bazę danych. Jako takie, aby autogenacja obiektu odnieść sukces, rodzaj właściwości/pola ID w twojej klasie musi być albo ciąg, obiektyw lub bigInteger .
Oto podstawowy przykład korzystania z operacji zapisu i pobierania jej zawartości.
Przykład 5.8. Wkładanie i pobieranie dokumentów za pomocą płyty MonGotem
import statyczny org.SpringFramework.dane.MongoDB.rdzeń.zapytanie.Kryteria.Gdzie; import statyczny org.SpringFramework.dane.MongoDB.rdzeń.zapytanie.Kryteria.zapytanie; … Osoba P = nowy Osoba("Pion", 33); Mongootemplate.wstaw (P); Osoba qp = płyta Mongootem.Findone (zapytanie (gdzie ("wiek").Jest(33)), Osoba.klasa);
Dostępne operacje wstawki/zapisywania są wymienione poniżej.
- próżnia ratować (Object ObjectToSave) Zapisz obiekt w kolekcji domyślnej.
- próżnia ratować (Object ObjectToSave, String CollectionName) Zapisz obiekt w określonej kolekcji.
Podobny zestaw operacji wstawki jest wymieniony poniżej
- próżnia wstawić (Object ObjectTosave) Włóż obiekt do kolekcji domyślnej.
- próżnia wstawić (Object ObjectToSave, String CollectionName) Włóż obiekt do określonej kolekcji.
W jakiej kolekcji zostaną zapisane moje dokumenty?
Istnieją dwa sposoby zarządzania nazwą kolekcji używanej do działania w dokumentach. Domyślna nazwa kolekcji, która jest używana, to nazwa klasy zmieniona, aby zacząć od litery niższej. Więc com.test.Klasa osoby byłaby przechowywana w kolekcji „osoby”. Możesz to dostosować, podając inną nazwę kolekcji za pomocą adnotacji @Document. Możesz także zastąpić nazwę kolekcji, podając własną nazwę kolekcji jako ostatni parametr wybranych wywołań metody MonGotemplate.
Wstawienie lub oszczędzanie poszczególnych obiektów
Sterownik MongoDB obsługuje wkładanie zbioru dokumentów w jednej operacji. Metody w interfejsie MonGooperations, które obsługują tę funkcjonalność, są wymienione poniżej
- wstawić Włóż obiekt. Jeśli istnieje istniejący dokument z tym samym identyfikatorem, generowany jest błąd.
- Insertall Przyjmuje zbiór obiektów jako pierwszy parametr. Ta metoda jest wyróżnia każdego obiektu i wprowadza go do odpowiedniego zbioru na podstawie określonych powyżej reguł.
- ratować Zapisz obiekt ovewrywanie dowolnego obiektu, który może istnieć z tym samym identyfikatorem.
Wstawienie kilku obiektów do partii
Sterownik MongoDB obsługuje wkładanie zbioru dokumentów w jednej operacji. Metody w interfejsie MonGooperations, które obsługują tę funkcjonalność, są wymienione poniżej
- wstawić Metody, które przyjmują kolekcję jako pierwszy argument. To wprowadza listę obiektów w pojedynczej partii zapisu do bazy danych.
5.5.4 aktualizowanie dokumentów w kolekcji
W przypadku aktualizacji możemy zdecydować, aby zaktualizować pierwszy dokument znaleziony za pomocą aktualizacji Monongooperation’s UpdateFirst lub możemy zaktualizować wszystkie dokumenty, które zostały dopasowane do zapytania za pomocą metody updatemulti . Oto przykład aktualizacji wszystkich kont oszczędnościowych, w których dodajemy jednorazowy 50 USD.00 Bonus do salda za pomocą operatora $ inc.
Przykład 5.9. Aktualizacja dokumentów za pomocą płyty MonGotem
import statyczny org.SpringFramework.dane.MongoDB.rdzeń.zapytanie.Kryteria.Gdzie; import statyczny org.SpringFramework.dane.MongoDB.rdzeń.zapytanie.Zapytanie; import statyczny org.SpringFramework.dane.MongoDB.rdzeń.zapytanie.Aktualizacja; . WriteSult WR = Mongootemplate.updateMulti (nowy Zapytanie (gdzie („Konta.typ konta").IS (konto.Typ.OSZCZĘDNOŚCI)), nowy Aktualizacja().Inc („Konta.$.balansować", 50.00), Konto.klasa);
Oprócz omówionego powyżej zapytania podajemy definicję aktualizacji za pomocą obiektu aktualizacji. Klasa aktualizacji ma metody pasujące do modyfikatorów aktualizacji dostępnych dla MongoDB.
Jak widać, większość metod zwraca obiekt aktualizacji, aby zapewnić płynny styl dla interfejsu API.
Metody wykonywania aktualizacji dokumentów
- aktualizacjaFirst Aktualizuje pierwszy dokument, który odpowiada kryteriom dokumentu zapytania do podanego zaktualizowanego dokumentu.
- UpdateMulti Aktualizuje wszystkie obiekty, które pasują do kryteriów dokumentów zapytania do dostarczonego zaktualizowanego dokumentu.
Pierwsze kroki z samouczkiem MongoDB i Java – Crud
Rejestrowanie sterownika Java MongoDB jest teraz włączone za pomocą popularnego interfejsu API SLF4J, więc dodałem logback w POM.XML i logowanie plików konfiguracyjnych.XML .
Wstęp
W tym pierwszym blogu serii Java Quick Start pokażę, jak skonfigurować projekt Java z Maven i wykonać polecenie MongoDB w Javie. Następnie zbadamy najczęstsze operacje – takie jak tworzenie, odczyt, aktualizacja i usuwanie – za pomocą sterownika MongoDB Java . Pokażę również niektóre z mocniejszych opcji i funkcji dostępnych w ramach sterownika MongoDB Java dla każdej z tych operacji, co daje naprawdę świetną podstawę wiedzy, na której można się opracować podczas serii.
W przyszłych postach na blogu przejdziemy dalej i pracujemy:
Transakcje kwasu wielorasko-stawowego.
MongoDB Java Reaktywne strumienie.
Dlaczego MongoDB i Java?
Java jest najpopularniejszym językiem w branży IT na dniu tego postu na blogu, a programiści głosowali na MongoDB jako najbardziej poszukiwaną bazę danych cztery lata z rzędu . W tej serii postów na blogu pokażę, jak potężne są te dwa świetne technologie w połączeniu i jak możesz uzyskać dostęp do tej mocy.
Wymagania wstępne
Aby śledzić, możesz użyć dowolnego środowiska, które lubisz i zintegrowane środowisko programistyczne. Użyję Maven 3.6.2 i Java Openjdk 13, ale cały kod będzie kompatybilny z wersjami Java 8–13, więc możesz użyć wybranego JDK i odpowiednio aktualizować wersję Java w pom.plik xml, który zamierzamy skonfigurować.
W przypadku klastra MongoDB będziemy używać klastra MongoDB bez poziomu M0 z Atlasu MongoDB . Jeśli jeszcze go nie masz, sprawdź mój post na blogu M0 Cluster.
Uzyskaj swój bezpłatny klaster M0 na MongoDB Atlas już dziś. Jest za darmo na zawsze i będziesz mógł użyć go do pracy z przykładami z tej serii blogów.
Wskoczmy i spójrzmy na to, jak dobrze Java i MongoDB współpracują.
Przygotowanie się
Na początek będziemy musieli założyć nowy projekt Maven. Masz w tym momencie dwie opcje. Możesz sklonować repozytorium tej serii, albo możesz utworzyć i skonfigurować projekt Maven.
Korzystanie z repozytorium GIT
Jeśli zdecydujesz się na użycie git, natychmiast otrzymasz cały kod. Nadal polecam przeczytanie konfiguracji ręcznej.
Możesz sklonować repozytorium, jeśli chcesz za pomocą następującego polecenia.
Lub możesz pobrać repozytorium jako plik zip .
Konfigurowanie ręcznego
Możesz użyć swojego ulubionego IDE, aby stworzyć nowy projekt Maven dla Ciebie, albo ręcznie możesz utworzyć projekt Maven. Tak czy inaczej, powinieneś uzyskać następującą architekturę folderu:
Pom.plik XML powinien zawierać następujący kod:
Aby sprawdzić, czy wszystko działa poprawnie, powinieneś być w stanie utworzyć i uruchomić prosty „Hello MongoDB!”Program. W src/main/java/com/mongoDB/QuickStart, stwórz HellomongoDB.plik Java:
Następnie skompiluj i wykonaj go za pomocą IDE lub użyj wiersza poleceń w katalogu głównym (gdzie jest folder SRC):
Wynik powinien wyglądać tak:
Uwaga: jeśli zobaczysz ostrzeżenia o nielegalnym refleksyjnym dostępie Guice.Java, można je zignorować. Guice jest używany przez Maven i potrzebuje aktualizacji. Możesz przeczytać o tym więcej w tym numerze Github . Te ostrzeżenia znikną w przyszłym wydaniu Guice i Maven.
Łączenie z Javą
Teraz, gdy nasz projekt Maven działa i rozwiązaliśmy nasze zależności, możemy zacząć korzystać z Atlasu MongoDB z Javą.
Jeśli zaimportowałeś przykładowy zestaw danych, jak sugerowano w poście na blogu Atlas Start Atlas, a następnie z kodem Java, który zamierzamy utworzyć, będziesz mógł zobaczyć listę baz danych w przykładowym zestawie danych.
Pierwszym krokiem jest ulepszenie Mongoclienta, przekazując ciąg połączenia MongoDB Atlas do Mongoklientów.Utwórz metodę statyczną. To ustanowi połączenie z Atlasem MongoDB za pomocą ciągu połączenia. Następnie możemy odzyskać listę baz danych w tym klastrze i wydrukować je, aby przetestować połączenie z MongoDB.
W src/main/java/com/mongoDB utwórz połączenie.plik Java:
Jak widać, ciąg połączenia MongoDB jest pobierany z Właściwości systemu , Musimy więc to skonfigurować. Po odzyskaniu ciągu połączenia MongoDB Atlas możesz dodać MongoDB.Właściwość systemu URI do twojego IDE. Oto moja konfiguracja na przykład z IntelliJ.
Lub jeśli wolisz używać Maven w wierszu poleceń, oto równoważny wiersz polecenia, który możesz uruchomić w katalogu głównym:
Uwaga: nie zapomnij o podwójnych cytatach wokół URI MongoDB, aby uniknąć niespodzianek ze skorupy.
Standardowe wyjście powinno wyglądać tak:
Wstaw operacje
Przygotowanie się
W sekcji łączenia z Java stworzyliśmy klasy HellomongoDB i połączenie . Teraz będziemy pracować nad klasą tworzenia.
Jeśli nie skonfigurowałeś swojego bezpłatnego klastra na MongoDB Atlas, teraz jest świetny czas, aby to zrobić. Uzyskaj wskazówki dotyczące tworzenia klastra .
Sprawdzanie modelu gromadzenia i danych
W przykładowym zestawie danych można znaleźć bazę danych próbki_training, która zawiera oceny kolekcji . Każdy dokument w tej kolekcji reprezentuje oceny ucznia dla określonej klasy.
Oto reprezentacja JSON dokumentu w skorupce Mongo .
A oto rozszerzona reprezentacja JSON tego samego ucznia. Możesz go odzyskać w Mongoodb Compass, naszym darmowym narzędziu GUI, jeśli chcesz.
Rozszerzone JSON to czytelna ludzka wersja dokumentu BSON bez utraty informacji typu. Możesz przeczytać więcej o sterowniku Java i BSON w dokumentacji Driver MongoDB Java .
Jak widać, MongoDB przechowuje dokumenty BSON, a dla każdej pary wartości kluczowej BSON zawiera klucz i wartość wraz z jego typem. W ten sposób MongoDB wie, że klasa_dema.
Mamy już 10 000 uczniów (Student_ID od 0 do 9999) już w tej kolekcji i każda z nich wzięła 10 różnych klas, co stanowi 100 000 dokumentów w tej kolekcji. Powiedzmy, że nowy student (Student_id 10 000) właśnie przybył na ten uniwersytet i otrzymał kilka (losowych) ocen w swojej pierwszej klasie. Włóżmy ten nowy dokument studencki za pomocą Java i MongoDB Java Driver.
Na tym uniwersytecie Class_id waha się od 0 do 500, więc mogę użyć dowolnej losowej wartości od 0 do 500.
Integracja MongoDB Java: 12 łatwych kroków
Zacznij od MongoDB Crud Operations w Python: 3 łatwe kroki
Substring MongoDB (substr) Agregacja: Uproszczenie 101
Złącze MongoDB JavaScript (Nodejs) uproszczone 101
Spis treści
Ta strona zawiera kompleksowy przegląd tego, jak możesz zacząć od MongoDB i Java. W tym poście ty’LL Dowiedz się, jak podłączyć aplikację Java z instancją MongoDB. Następnie wykonasz wspólne operacje MongoDB za pomocą sterownika MongoDB Java. Przeczytaj dalej, aby skonfigurować MongoDB Java Integracja dzisiaj!
Spis treści
Co to jest MongoDB?
MongoDB to baza danych open source, która ma szeroki zakres aplikacji. Może być używany jako analityczna baza danych, transakcyjna baza danych, wskaźnik wyszukiwania lub magazyn danych, między innymi przypadki użycia. MongoDB ma elastyczny schemat, który zapewnia obsługę pełnego indeksowania, replikacji, pamięci JSON i nieustrukturyzowanego języka zapytań.
Kluczowe koncepcje MongoDB to:
- ID: Identyfikator to nazwa pola używana do reprezentowania unikalnego obiektu w MongoDB. Może być jawnie utworzony przez użytkownika lub domyślnie przez serwer MongoDB.
- Kolekcja: Jest to wiadro, które przechowuje grupę dokumentów MongoDB. Występuje pod bazą danych w hierarchii.
- Baza danych: To najwyższy poziom organizacji danych w instancji MongoDB. Baza danych przechowuje kolekcje i instancja MongoDB może zawierać wiele baz danych.
- Dokument: Rekordy przechowywane w kolekcji MongoDB nazywane są dokumentami. Zawierają klucze i wartości. Wartości mogą być ciągi, liczby całkowite, logiczne, daty, a także inne wbudowane dokumenty.
- Pole: odnosi się to do pary klucza/wartości w dokumencie.
Rozwiąż problemy z replikacją danych za pomocą niezawodnych, bez kodu, zautomatyzowane rurociągi z 150+ złączami.
Kluczowe funkcje MongoDB
MongoDB ma kilka niezwykłych możliwości, które sprawiają, że jest szeroko użyteczny i popularny. Spójrzmy na najlepsze funkcje techniczne MongoDB:
Obsługuje zapytania Adhoc
Jedną z największych korzyści, jakie wyróżnia MongoDB, jest jego wydajność podczas obsługi zapytania ad hoc na danych, które są zwykle aktualizowane w czasie rzeczywistym. MongoDB może wykonywać wyszukiwania pola, wyszukiwania zakresu, a także zapytania wyrażenia regularnego.
Indeksowanie
Indeksowanie jest ważną funkcją bazy danych do poprawy prędkości wyszukiwania i wydajności zapytań wyszukiwania. Bez indeksowania baza danych byłaby zmuszona do skanowania dokumentów jeden po drugim, aby wybrać te, które pasują do zapytania, które byłyby nieefektywne. Jeśli jednak każde zapytanie ma odpowiedni indeks, żądania użytkowników mogą zostać szybko wykonane przez serwer. W przypadku indeksowania MongoDB jest możliwe w dowolnym polu lub kluczu, w dokumencie podtrzymującym złożone wzorce dostępu do zestawów danych.
Baza danych bez schematu
Klasyczne relacyjne bazy danych używają schematu do zdefiniowania każdego elementu funkcjonalnego, w tym tabelek, widoków wierszy, indeksów i relacji. W MongoDB jedna kolekcja utrzymuje różne dokumenty. Nie ma schematu, więc w kolekcji mogą być wiele dokumentów, mają odrębne klucze, a te klucze mogą być wyjątkowe. Baza danych Schemales, taka jak MongoDB, jest bardziej elastyczna, ponieważ nie przenosi tych ograniczeń z góry, mapując się na bardziej naturalną bazę danych.
Aby dowiedzieć się więcej o MongoDB, odwiedź tutaj.
Co to jest Java?
Java to popularny język programowania, który’s najczęściej używany do rozwoju po stronie serwera, a także do tworzenia aplikacji mobilnych. W swoim projekcie Java jest językiem obiektowym, który po prostu oznacza, że wszystkie dane i metody są reprezentowane jako klasy i obiekty.
Java można zarówno skompilować lub interpretować, że tłumaczenie kodu Java na kod bajtowy lub format binarny można wykonać za pomocą kompilatora lub interpretera. Od tego’s skompilowany język, to’jest bardzo szybko w czasie wykonywania, a także bardzo łatwy do debugowania.
Niektóre najlepsze przypadki użycia Java obejmują opracowanie:
- Aplikacje na Androida
- Zastosowania GUI komputerów stacjonarnych
- Aplikacje internetowe
- Zastosowania naukowe
- Aplikacje po stronie serwera sektora finansowego
- Systemy wbudowane
Kluczowe funkcje Java
Poniższe funkcje dają Javie przewagę nad innymi językami programowania:
- Zorientowany na obiekt: Język programowania Java traktuje wszystko jak obiekt. Może łatwo mapować rzeczywiste scenariusze w kod, traktując poszczególne jednostki jako obiekty.
- Niezależny platforma: W przeciwieństwie do języków programowania â â â Â Podobnie jak C i C ++, Java nie jest kompilowana w maszynie specyficznej dla platformy. Tworzy niezależny od platformy kod bajtowy, który jest dystrybuowany przez Internet i jest interpretowany przez maszynę wirtualną Java (JVM) zainstalowaną w dowolnym systemie.
- Bezpieczeństwo: Dzięki funkcji bezpieczeństwa języka programowania Java pozwala opracowywać systemy odporne na manipulacje i wolne od wirusów. Wykorzystuje również techniki uwierzytelniania oparte na kryptografii publicznej, aby zapewnić bezpieczeństwo kodu i danych.
- Przenośny: Java jest niezależnym od architektury językiem programowania. Więc łatwo jest przenieść kod napisany w języku programowania Java do różnych procesorów.
- Solidny: Java to język programowania, który stara się wyeliminować instancje podatne na błędy za pomocą sprawdzania błędów w czasie kompilacji i sprawdzania czasu wykonywania.
Aby dowiedzieć się więcej o języku programowania Java, odwiedź tutaj.
Uprościj analizę danych za pomocą rurociągu danych bez kodu Hevo
HEVO Data, zautomatyzowany rurociąg danych bez kodu pomaga ładować dane z dowolnego źródła danych, takich jak bazy danych, aplikacje SaaS, przechowywanie w chmurze, SDK, S i usługi streamingowe i upraszcza proces ETL. Obsługuje ponad 100 źródeł danych, takich jak MongoDB i ładuje dane do pożądanego magazynu danych, wzbogaca dane i przekształca je w formularz gotowy do analizy bez zapisywania pojedynczego wiersza kodu.
Jego całkowicie zautomatyzowany rurociąg oferuje dane, które należy dostarczyć w czasie rzeczywistym bez utraty źródła do miejsca docelowego. Jego odporna na uszkodzenia i skalowalna architektura zapewnia, że dane są obsługiwane w bezpieczny, spójny sposób z zerową utratą danych i obsługuje różne formy danych. Podane rozwiązania są spójne i działają również z różnymi narzędziami inteligencji biznesowej (BI).
Sprawdź, dlaczego Hevo jest BesT:
- Bezpieczne: Hevo ma architekturę odporną na uszkodzenia, która zapewnia, że dane są obsługiwane w bezpieczny, spójny sposób z zerową utratą danych.
- Zarządzanie schematem: Hevo zabiera żmudne zadanie zarządzania schematem i automatycznie wykrywa schemat przychodzących danych i mapuje je do schematu docelowego.
- Minimalne uczenie się: Hevo, z jego prostym i interaktywnym interfejsem użytkownika, jest niezwykle prosty dla nowych klientów do pracy i wykonywania operacji.
- Hevo jest zbudowany do skalowania: W miarę wzrostu liczby źródeł i wielkości danych, HEVO skaluje się poziomo, obsługując miliony rekordów na minutę z bardzo niewielkim opóźnieniem.
- Przyrostowe obciążenie danych: HEVO pozwala na przesyłanie danych zmodyfikowanych w czasie rzeczywistym. Zapewnia to efektywne wykorzystanie przepustowości na obu końcach.
- Wsparcie na żywo: Zespół HEVO jest dostępny przez całą dobę, aby wydłużyć wyjątkowe wsparcie dla swoich klientów poprzez rozmowy czatowe, e -mail i wsparcie.
- Monitorowanie na żywo: HEVO pozwala monitorować przepływ danych i sprawdzić, gdzie dane są w określonym momencie.
Jakie są kroki, aby skonfigurować integrację MongoDB Java?
Mam nadzieję, że do tej pory zdobyłeś podstawowe zrozumienie MongoDB i Java, a także dlaczego oni’ponownie używane w tworzeniu aplikacji. Teraz pozwól’s zanurkuj i spójrz na kroki za pomocą, które możesz skonfigurować MongoDB Java integracja:
- Krok 1: Zainstaluj pakiet OpenJDK
- Krok 2: Ustaw zmienną środowiskową java_home
- Krok 3: Zainstaluj MongoDB
- Krok 4: Zainstaluj IDE lub edytor
- Krok 5: Skonfiguruj nowy projekt Java
- Krok 6: Zainstaluj bibliotekę klientów MongoDB Java
- Krok 7: Użyj biblioteki klientów MongoDB Java
- Krok 8: Utwórz kolekcję MongoDB
- Krok 9: Utwórz dokumenty
- Krok 10: Dokumenty zapytania
- Krok 11: Zaktualizuj dokumenty
- Krok 12: Usuń dokumenty
Krok 1: Zainstaluj pakiet OpenJDK
Podążać wraz z konfiguracją MongoDB Java, ty’Najpierw musisz przygotować lokalną maszynę do rozwoju Java. Aby to zrobić, musisz najpierw zainstalować pakiet OpenJDK 8 (Open Java Development Kit).
1) Linux
Jeśli ty’Re na Debian lub Ubuntu, otwórz swój wiersz poleceń i uruchom następujące polecenie:
$ sudo apt-get instaluj openjdk-8-jdk
Dla Centos, Red Hat, Oracle, Fedora i innych podobnych rozkładów Linux używają następującego polecenia:
$ su -c "mniam instaluj java -1.8.0-openjdk-devel "
2) MacOS
Jeśli ty’RE na macOS Użyj następującego polecenia:
% instalacja browaru openjdk@8
Następnie utwórz symboliczny link, aby opakowanie Java mogło go znaleźć:
% sudo ln -sfn/usr/local/opt/openjdk@8/libexec/openjdk.JDK/Library/Java/JavavirtualMachines/OpenJdk-8.jdk
3) Windows
- Pobierz instalator oparty na MSI z tego linku.
- Wyodrębnij pliki zip do folderu.
- Uruchom openjdk 8 dla instalatora systemu Windows.
- Postępuj zgodnie z podpowiedziami na ekranie, aby zainstalować.
Krok 2: Ustaw zmienną środowiskową java_home
Po wprowadzeniu JDK musisz zainstalować środowisko Java, aby kontynuować integrację MongoDB Java.
1) Linux
- Otwórz swój terminal i wpisz:
sudo nano /itp. /profil
- Następnie przejdź do końca pliku i wpisz:
Eksport java_home =/usr/lib/jvm/java-8-openjdk-amd64/bin/java eksport ścieżka = $ java_home/bin: $ ścieżka
- Zapisz plik i wyjście (Ctrl+O, Ctrl+x).
2) MacOS
- Otwórz swój terminal i wpisz:
Emacs .profil
- Następnie przejdź do końca pliku i wpisz:
Java_home =/biblioteka/java/home eksport java_home;
- Zapisz i wyjdź (Ctrl-X, Ctrl-S; Ctrl-X, Ctrl-C).
3) Windows
Aby ustawić zmienną środowiskową na komputerze Windows, otwórz wiersz polecenia za pomocą uprawnień administratora i uruchom następujące polecenie:
setx -m java_home "C: Program ~ 1javajdk1.8.0_xx "
Następnie uruchom ponownie wiersz polecenia, aby ponownie załadować zmienne środowiskowe. Uruchom następujące polecenie, aby sprawdzić, czy ścieżka została dodana:
echo %java_home %
Krok 3: Zainstaluj MongoDB
Gdy skończysz z częścią integracji Java Java, czas na zainstalowanie MongoDB i jej narzędzi.
1) Linux
- Otwórz terminal i wydaj następujące polecenie, aby zaimportować klucz publiczny MongoDB z systemu zarządzania pakietami:
wget -qo - https: // www.MongoDB.ORG/STATIC/PGP/SERVER-5.0.ASC | sudo apt-key add -
- Następnie utwórz plik listy, wydając następujące polecenie:
echo "deb [arch = AMD64, arm64] https: // repo.MongoDB.org/apt/ubuntu focal/MongoDB-org/5.0 Multiverse "| sudo tee/etc/apt/Źródła.lista.D/MongoDB-org-5.0.lista
- Odśwież bazę danych pakietów.
Sudo apt-get Aktualizacja
- Uruchom następujące polecenie, aby zainstalować MongoDB:
sudo apt-get instal -y MongoDB-org
- Rozpocznij MongoDB:
sudo systemctl start mongood
- Sprawdź, czy MongoDB działa:
SUDO SystemCTL Status Mongood
MongoDB powinien działać na porcie 27017.
Powyższe instrukcje zostały przetestowane na Ubuntu 20.0. Możesz uzyskać instrukcje instalacji dla innych dystrybucji Linux z następującego linku.
2) MacOS
- Wydaj następujące polecenie, aby pobrać formułę Homebrew dla MongoDB:
Brew Tap MongoDB/Brew
- Zainstaluj MongoDB za pomocą następującego polecenia:
instaluj browar [email protected]
- W przypadku komputerów MacOS z procesorami Intel uruchom MongoDB przy użyciu następującego polecenia:
MONGOD - -CONFIG/USR/LOCAL/ETC/MONGOD.Conf - -Fork
- W przypadku komputerów MacOS z procesorami M1 użyj następującego polecenia:
Mongood - -config/opt/homebrew/etc/mongod.Conf - -Fork
3) Windows
- Pobierz instalator oparty na MongoDB MSI z tego linku.
- Uruchom instalator, klikając dwukrotnie .plik MSI.
- Postępuj zgodnie z podpowiedziami na ekranie, aby zainstalować.
Krok 4: Zainstaluj IDE lub edytor
Aby uruchomić przykłady podane na tym blogu, zalecamy korzystanie z zintegrowanego środowiska programistycznego (IDE). Dzieje się tak, ponieważ sprawia, że skonfigurowanie maven lub gradu podczas budowania i uruchamiania projektu Java jest o wiele bardziej wygodne.
Pod tobą’Znajdź listę niektórych popularnych redaktorów używanych do opracowywania aplikacji Java i będzie pasował do twojego MongoDB Java integracja:
- Atom przez Github
- Idea Intellij autorstwa Jetbrains
- Kod Visual Studio autorstwa Microsoft
- Eclipse by Eclipse Foundation
Te IDE oferują przydatne funkcje, takie jak podświetlenie składni, zakończenie kodu, w pełni zintegrowane możliwości debugowania i wiele więcej.
Krok 5: Skonfiguruj nowy projekt Java
Korzystając z ulubionego IDE, stwórz nowy projekt Maven lub Gradle. Jeśli ty’Przy użyciu Maven należy uzyskać następującą strukturę folderu:
java-quick-start/ â â Â POM.xml â â src â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â mongoDB â â â â â ore â â â
Jeśli używasz gradle, powinieneś mieć następującą strukturę folderu:
â â.gradle â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â red -â red -s Java
Krok 6: Zainstaluj bibliotekę klientów MongoDB dla Java
Biblioteka klientów MongoDB dla Java pozwala połączyć się i komunikować z instancją MongoDB z aplikacji Java.
Jeśli używasz Maven, dodaj bibliotekę klientów MongoDB Java do swojej listy zależności w swojej pom.XML plik.
org.MongoDB MongoDB-Driver-Sync 4.4.1
Twój pom.XML Plik powinien teraz wyglądać tak:
4.0.0 com.MongoDB Java-Quick-Start 1.0-Snapshot 8 8 UTF-8 4.4.1 3.10.0 org.MongoDB MongoDB-Driver-Sync $ org.Apache.Maven.wtyczki Maven-Compiller-Plugin $ $ $
Jeśli ty’Ponownie za pomocą gradle, dodaj następujący fragment kodu do swojego zbudować.Gradle Lista zależności dla twojej integracji MongoDB Java:
zależności
Twój zbudować.Gradle Plik powinien przypominać następujący plik:
wtyczki < id 'base' >import org.Gradle.dystrybucja.Downloadgradle wersja = '0.1 'Zależności < compile 'org.mongodb:mongodb-driver-sync:4.4.1' >zadania.Zarejestruj się („Downloadgradle”, Downloadgradle) < description = 'Downloads the Gradle distribution with a given version.' gradleVersion = '4.6' >zadania.Rejestr („CreateCustomgradEdistribution”, Zip) < description = 'Builds custom Gradle distribution and bundles initialization scripts.' dependsOn downloadGradle def projectVersion = project.version archiveFileName = downloadGradle.gradleVersion.map < gradleVersion ->„MyCompany-Gradle-$-$-bin.Zip "> z Ziptree (Downloadgradle.plik docelowego) z (src/init.D') < into "$/init.d" > >
Krok 7: Korzystanie z biblioteki klientów MongoDB Java
Aby korzystać z biblioteki klientów MongoDB Java, utwórz plik, który będzie zawierał aplikację w katalogu pakietu podstawowego projektu. Możesz to wymienić App.Jawa.
Dodaj następujące instrukcje importu, aby zainicjować bibliotekę:
Importuj statyczny com.MongoDB.klient.Model.Filtry.eq; import org.BSON.Dokument; import com.MongoDB.klient.Mongoklient; import com.MongoDB.klient.Mongoklienty; import com.MongoDB.klient.Mongocollection; import com.MongoDB.klient.Mongoodatabaza;
Krok 8: Utwórz kolekcję MongoDB
Z tym na uboczu, to’S czas, aby Twoja integracja MongoDB Java oddziałuje z bazą danych. Pozwalać’S PIERWSZY zacznij od utworzenia kolekcji. Możesz utworzyć kolekcję MongoDB, określając docelową bazę danych za pomocą getDatabase () metoda, a następnie wywołując createCollection () Metoda com.MongoDB.klient.Mongoodatabaza interfejs. Ta metoda akceptuje dosłowną wartość ciągu o nazwie kolekcji. Jeśli baza danych nie istnieje, MongoDB utworzy ją domyślnie.
Poniższy fragment kodu tworzy kolekcję w bazie danych MongoDB:
Importuj Java.Util.Tablice; import org.BSON.Dokument; import org.BSON.typy.Obiektyd; import com.MongoDB.Mongoxception; import com.MongoDB.klient.Mongoklient; import com.MongoDB.klient.Mongoklienty; import com.MongoDB.klient.Mongocollection; import com.MongoDB.klient.Mongoodatabaza; import com.MongoDB.klient.wynik.INSERTONERESULT; Klasy publiczne CreateCollection < public static void main(String[] args) < String uri = "mongodb://localhost:27017"; // Create a MongoDB Client MongoClient mongoClient = MongoClients.create(uri)); // Create a MongoDB database MongoDatabase database = mongoClient.getDatabase("usersDB"); // Create a MongoDB Collection MongoCollectioncollection = database.createCollection("users"); System.out.println("Collection Created Successfully!"); > >
Krok 9: Utwórz dokumenty
Poniższy fragment używa InserTone () metoda wstawienia dokumentu do użytkownika’Kolekcja S, którą stworzyłeś w poprzednim kroku. Jeśli baza danych lub kolekcja nie istnieje, MongoDB utworzy oba.
Importuj Java.Util.Tablice; import org.BSON.Dokument; import org.BSON.typy.Obiektyd; import com.MongoDB.Mongoxception; import com.MongoDB.klient.Mongoklient; import com.MongoDB.klient.Mongoklienty; import com.MongoDB.klient.Mongocollection; import com.MongoDB.klient.Mongoodatabaza; import com.MongoDB.klient.wynik.INSERTONERESULT; Wstawka klasy publicznej < public static void main(String[] args) < String uri = "mongodb://localhost:27017"; try (MongoClient mongoClient = MongoClients.create(uri)) < MongoDatabase database = mongoClient.getDatabase("usersDB"); MongoCollectioncollection = database.getCollection("users"); try < InsertOneResult result = collection.insertOne(new Document() .append("_id", new ObjectId()) .append("username", "vitali@30") .append("phonenumber", 2501345876) .append("email", "[email protected]) ); System.out.println("Success! Inserted document id: " + result.getInsertedId()); >Catch (MongoException Me) < System.err.println("Unable to insert due to an error: " + me); >>>>
Możliwe jest również wstawienie wielu dokumentów do kolekcji za jednym razem, wywołując InsertMany () metoda. Aby wstawić wiele dokumentów, musisz je dodać do listy i przekazać tę listę jako tablicę. Poniższy fragment kodu ilustruje, w jaki sposób możesz użyć InsertMany () metoda tego osiągnięcia.
Importuj Java.Util.Tablice; Importuj Java.Util.Lista; import org.BSON.Dokument; import com.MongoDB.Mongoxception; import com.MongoDB.klient.Mongoklient; import com.MongoDB.klient.Mongoklienty; import com.MongoDB.klient.Mongocollection; import com.MongoDB.klient.Mongoodatabaza; import com.MongoDB.klient.wynik.InsertManResult; InsertMany klasy publicznej < public static void main(String[] args) < String uri = "mongodb://localhost:27017"; try (MongoClient mongoClient = MongoClients.create(uri)) < MongoDatabase database = mongoClient.getDatabase("usersDB"); MongoCollectioncollection = database.getCollection("users"); List userList = Arrays.asList( new Document().append("username", "owen hart"), new Document().append("username", "jack grealish")); try < InsertManyResult result = collection.insertMany(userList); System.out.println("Inserted document ids: " + result.getInsertedIds()); >Catch (MongoException Me) < System.err.println("Unable to insert due to an error: " + me); >>>>
Krok 10: Dokumenty zapytania
Pracując z integracją MongoDB Java, możesz pobrać dokumenty w kolekcji, wywołując znajdować() metoda. Ta metoda zwraca iteralny obiekt, który zawiera wszystkie dokumenty w kolekcji:
import com.MongoDB.klient.Finisterable; import com.MongoDB.klient.Mongocollection; import com.MongoDB.klient.Mongoodatabaza; Importuj Java.Util.Iterator; import org.BSON.Dokument; import com.MongoDB.Mongoklient; Znajdź klasę publiczną < public static void main( String[] args ) < String uri = "mongodb://localhost:27017"; try (MongoClient mongoClient = MongoClients.create(uri)) < MongoDatabase database = mongoClient.getDatabase("usersDB"); MongoCollectioncollection = database.getCollection("users"); FindIterable iterDoc = collection.find(); Iterator it = iterDoc.iterator(); while (it.hasNext()) < System.out.println(doc.it.next()); >>>>
Krok 11: Zaktualizuj dokumenty
Aktualizacje w bazie danych MongoDB można wykonać za pomocą aktualizacja () Metoda Aktualizacje klasa. W poniższym przykładzie będziesz aktualizować wartość numeru telefonu i dodać adres do dokumentu, który pasuje do nazwy użytkownika “vitali@30”.
import org.BSON.Dokument; import org.BSON.konwersje.BSON; import com.MongoDB.Mongoxception; import com.MongoDB.klient.Mongoklient; import com.MongoDB.klient.Mongoklienty; import com.MongoDB.klient.Mongocollection; import com.MongoDB.klient.Mongoodatabaza; import com.MongoDB.klient.Model.Aktualizacja; import com.MongoDB.klient.Model.Aktualizacje; import com.MongoDB.klient.wynik.Updateresult; aktualizacja klasy publicznej < public static void main(String[] args) < String uri = "mongodb://localhost:27017"; try (MongoClient mongoClient = MongoClients.create(uri)) < MongoDatabase database = mongoClient.getDatabase("usersDB"); MongoCollectioncollection = database.getCollection("users"); Document query = new Document().append("username", "vitali@30"); Bson updates = Updates.combine( Updates.set("phonenumber", 010154257), Updates.addToSet("address", "666, 5th Avenue, NYC")); UpdateOptions options = new UpdateOptions().upsert(true); try < UpdateResult result = collection.updateOne(query, updates, options); System.out.println("Modified document count: " + result.getModifiedCount()); System.out.println("Upserted id: " + result.getUpsertedId()); // only contains a value when an upsert is performed >Catch (MongoException Me) < System.err.println("Unable to update due to an error: " + me); >>>>
Krok 12: Usuń dokumenty
Po ustawieniu integracji MongoDB Java możesz nadal wykonać operację usuwania w dokumencie w MongoDBCollection za pomocą deleteone () metoda. Metoda akceptuje filtr zapytania, który pasuje do dokumentu, który chcesz usunąć.
Poniższy fragment kodu usunie jednego użytkownika za pomocą EQ () Filtr, aby zidentyfikować konkretnego użytkownika z nazwą użytkownika “vitali@30” Z twojej integracji Java MongoDB:
Importuj statyczny com.MongoDB.klient.Model.Filtry.eq; import org.BSON.Dokument; import org.BSON.konwersje.BSON; import com.MongoDB.Mongoxception; import com.MongoDB.klient.Mongoklient; import com.MongoDB.klient.Mongoklienty; import com.MongoDB.klient.Mongocollection; import com.MongoDB.klient.Mongoodatabaza; import com.MongoDB.klient.wynik.Deletesult; Usuń klasę publiczną < public static void main(String[] args) < String uri = "mongodb://localhost:27017"; try (MongoClient mongoClient = MongoClients.create(uri)) < MongoDatabase database = mongoClient.getDatabase("usersDB"); MongoCollectioncollection = database.getCollection("users"); Bson query = eq("username", "vitali@30"); try < DeleteResult result = collection.deleteOne(query); System.out.println("Deleted document count: " + result.getDeletedCount()); >Catch (MongoException Me) < System.err.println("Unable to delete due to an error: " + me); >>>>
To’S It! Możesz teraz skonfigurować swój własny MongoDB Java integracja.
Wniosek
W tym artykule wprowadzono Cię do języka programowania MongoDB i Java wraz z kluczowymi funkcjami. Jeśli pomyślnie ukończyłeś ten przewodnik, powinieneś mieć dobry pomysł, jak skonfigurować MongoDB Java integracja. Omówiłeś kroki wymagane do skonfigurowania środowisk programistycznych MongoDB i Java na komputerze lub serwerze. Omówiłeś także sposób korzystania z sterownika Java do połączenia z instancją MongoDB. Wreszcie widziałeś przykłady napisania prostych operacji Crudb MongoDB Java.
MongoDB to świetne narzędzie do przechowywania danych biznesowych. Czasami jednak musisz przenieść te dane do hurtowni danych w celu dalszej analizy. Budowanie wewnętrznego rozwiązania dla tego procesu może być drogim i czasochłonnym zadaniem. Dane HEVO, z drugiej strony, oferują nieoczeki, który może zautomatyzować proces przesyłania danych, dzięki czemu umożliwia skupienie się na innych aspektach firmy, takich jak analityka, zarządzanie klientami itp. Ta platforma pozwala przesyłać dane ze 100+ źródeł, takich jak MongoDB do chmurowych hurtowni danych, takich jak Snowflake, Google BigQuery, Amazon Redshift itp. Zapewni ci bezproblemowe wrażenia i znacznie ułatwi swoje życie zawodowe.
Chcesz wziąć Hevo na spin? Zarejestruj się na 14-dniowy bezpłatny proces i doświadcz bogatej w funkcje Hevo Suite z pierwszej ręki.
Podziel się swoimi poglądami MongoDB Java Integracja w sekcji komentarzy!
Transakcje Java MongoDB: tworzenie, zarządzanie i przepływy pracy uproszczone | Przewodnik 101
Obsługa baz danych i wykonywanie kilku operacji danych może być trudne. Systemy zarządzania bazami danych zostały wprowadzone w celu rozwiązania problemów zarządzania i roboczych zebranych danych. Jedną z najpopularniejszych baz danych jest MongoDB. MongoDB jest jedną z najbardziej elastycznych baz danych, a uruchamianie go z Javą sprawia, że jest jeszcze szybszy i łatwiejszy.
Spis treści
W tym artykule dowiesz się o transakcjach Java MongoDB. Co więcej, omówimy, jak tworzyć, zarządzać i pracować z transakcjami MongoDB.
Spis treści
- Wymagania wstępne
- Co to jest MongoDB?
- Jak prowadzić MongoDB z Javą?
- Co to jest transakcja MongoDB?
- Tworzenie transakcji Java MongoDB
- Zarządzanie transakcjami Java MongoDB
- Przepływ pracy transakcji Java MongoDB
- Wniosek
Wymagania wstępne
Podstawowe zrozumienie baz danych.
Co to jest MongoDB?
MongoDB to baza danych NoSQL, która zasadniczo różni się od baz danych SQL. MongoDB to nierelacyjna, open source, niezależna od platformy i oparta na dokumentach baza danych. Bazy danych SQL przechowują powiązane dane w tabelach, podczas gdy MongoDB zajmuje się danymi niezwiązanymi.
MongoDB obsługuje transakcje kwasowe (atomowość, spójność, izolacja i trwałość) w pojedynczych lub wielu dokumentach. Te właściwości kwasowe transakcji zapewniają, że złożone operacje transakcji są bezpieczne i niezawodne, gwarantując ważność danych. MongoDB wprowadził wiele dokumentów, kolekcji i baz danych transakcje kwasowe w MongoDB 4.0 wersja.
MongoDB działa na standardowych systemach operacyjnych, Windows, Linux, MacOS i chmurze. Edycja MongoDB, która działa w systemie operacyjnym, to serwer społeczności MongoDB, a instalacja MongoDB w chmurze nazywa się MongoDB Atlas.
Jak prowadzić MongoDB z Javą?
Zainstalować Java w swoim systemie i preferowane zintegrowane środowisko programistyczne (IDE) gotowe. Aby skonfigurować Java i MongoDB, najpierw powinieneś zdobyć kierowcę MongoDB Java. Zasoby do instalacji MongoDB zostaną odebrane przez dwa IDE w Gradle lub Maven. Kierowcy Java MongoDB zapewniają zarówno interakcję synchroniczną, jak i asynchroniczną.
Kroki, aby zdobyć kierowcę MongoDB Java
- Zainstaluj odpowiednią wersję sterownika MongoDB z tej strony internetowej. Następnie przejdź do produktów z ikony menu. Znaleźć ‘Dane bezpośrednie’ opcja i kliknij na nią.
- Zostaniesz przekierowany na inną stronę internetową, na której można znaleźć ‘Łączność danych’ Opcja w panelu przeglądu, na którym zobaczysz JDBC. Kliknij na to.
- Inna strona otworzy się. Wyszukaj MongoDB z listy i kliknij go, aby iść dalej.
- Pojawi się nowa strona, w której zobaczysz opcję pobierania. Kliknij na to, a następnie będziesz mieć dwie opcje; Windows i Linux. Zgodnie z systemem systemu operacyjnego, kliknij go, aby pobrać.
- Musisz wypełnić formularz do pobrania i kliknij Pobierz.
- Po pobraniu wyodrębnij pobrany plik.
- Otwórz wyodrębniony plik, aby rozpocząć instalację. Kliknij ‘Następny’ kontynuować.
- Zaakceptuj wszystkie warunki, a następnie przejdź do przodu, klikając Dalej.
- UWAGA: Nie zmieniaj niczego w nadchodzących dwóch oknach. Kliknij następne, aby kontynuować.
- Na koniec dotrzesz, aby zainstalować opcję. Kliknij na to, a instalacja się rozpocznie.
- Poczekaj, aż proces instalacji zakończy.
- Po zakończeniu instalacji kliknij, aby zakończyć instalację.
- Otwórz dysk C i podążaj poniższą ścieżką. Jeśli znajdziesz folder JDBC, instalacja się powiodła.
Bez wysiłku skal integrację danych z HEVO’S tolerancyjny na usterki bez kodu rurociągu danych
Jako zdolność firm do gromadzenia danych eksploduje, zespoły danych odgrywają kluczową rolę w podsycaniu decyzji opartych na danych. Jednak starają się skonsolidować rozproszone dane w swoim magazynie, aby zbudować jedno źródło prawdy. Zepsute rurociągi, problemy z jakością danych, błędy i błędy oraz brak kontroli i widoczności w przepływie danych sprawiają, że integracja danych jest koszmarem.
Ponad 1000 zespołów danych polega na Hevo’S Platforma rurociągów danych do integracji danych z ponad 150+ źródeł w ciągu kilku minut. Miliardy zdarzeń danych ze źródeł tak różnorodnych jak aplikacje SaaS, bazy danych, pamięć plików i źródła przesyłania strumieniowego można replikować w prawie rzeczywistym w czasie rzeczywistym z HEVO’architektura odporna na wady. Co’S WIĘCEJ-HEVO umieszcza pełną kontrolę w rękach zespołów danych z intuicyjnymi pulpitami nawigacyjnymi do monitorowania rurociągów, zarządzania auto-schema i niestandardowym harmonogramem przyjmowania/ładowania.
To, w połączeniu z przezroczystymi cenami i obsługą 24 × 7, czyni nas najbardziej specjalnym oprogramowaniem do rurociągów danych w witrynach recenzji.
Weź nasz 14-dniowy bezpłatny proces, aby uzyskać lepszy sposób zarządzania rurociągami danych.
Co to jest transakcja MongoDB?
Transakcja w MongoDB to logiczna grupa procesów, która wykonuje jedną lub więcej operacji w wielu dokumentach. Transakcja zapewnia sposób grupowania i izolowania wielu stwierdzeń i przetwarzania ich jako pojedynczej operacji.
Zamiast wykonywać grupę poleceń indywidualnie, możesz użyć transakcji do łączenia się i wykonywania poleceń w innym kontekście.
Te operacje w transakcjach to wielokrotne operacje odczytu i zapisu wykonane w bazie danych MongoDB. Transakcje utrzymują integralność zestawu operacji i zapewniają silną spójność danych użytkownikowi końcowe.
Transakcje w MongoDB mają właściwości kwasowe. Właściwości te zapewniają, że złożone operacje są bezpieczne i niezawodne. MongoDB obsługuje wiele Document i rozproszony multidocument.
Tworzenie transakcji Java MongoDB
Transakcje można przeprowadzić tylko w bazach danych, które działają jako część dużego klastra. Ten klaster może być albo odłamkowanym klastrem bazy danych lub zestawem repliki. Zwykle transakcje MongoDB są pisane i wykonywane z aplikacji zewnętrznych za pomocą metod API. Tutaj my’LL Utwórz transakcję za pomocą powłoki MongoDB.
Notatka: Po początkowej metodzie StartTransaction () operacja automatycznie przerywa, jeśli sesja transakcji będzie działać przez ponad 60 sekund.
Poniżej znajdują się kroki konceptualizacji sesji transakcyjnej od początku do końca.
db.autorski.znajdować() [ < _id: ObjectId("620397dd4b871fc65c193106"), first_name: 'James', last_name: 'Joyce', title: 'Ulysses' >, < _id: ObjectId("620398016ed0bb9e23785973"), first_name: 'William', last_name: 'Gibson', title: 'Neuromancer' >, < _id: ObjectId("6203981d6ed0bb9e23785974"), first_name: 'George', last_name: 'Orwell', title: 'Homage to Catalonia' >, < _id: ObjectId("620398516ed0bb9e23785975"), first_name: 'James', last_name: 'Baldwin', title: 'The Fire Next Time' >]
To samo z interfejsem API tworzysz sesję transakcyjną za pomocą kodu:
var session = db.getMongo ().Starascession ()
Kolejnym krokiem jest rozpoczęcie transakcji poprzez wywołanie metody StartTransaction (). Użyj poniższego polecenia:
sesja.startTransaction ( < "readConcern": < "level": "snapshot" >, „WriteConcern”: < "w": "majority >>)
Istnieją dwie opcje metody StartTransaction (): Przeczytaj troskę i napisz problem.
Zestaw dotyczący odczytu jest ignorowany w transakcji na poziomie kolekcji i bazy danych. Dlatego musisz ustawić troskę odczytu na poziomie transakcji na startTransaction (). Jednak domyślna troska odczytu ustawia się w trosce o odczyt na poziomie sesji za transakcję.
Jeśli zarówno na poziomie transakcji, jak i odczytanie na poziomie sesji nie są ustawione, obawy odczytu na poziomie klienta są ustawione automatycznie. Czytanie na poziomie klienta jest ‘lokalny’ do odczytów przeciwko podstawowi.
Pisanie są używane do popełnienia operacji zapisu. Operacje zapisu wewnątrz transakcji należy wydać domyślnie, określając obawę zapisu. Operacje zapisu są następnie popełniane przy użyciu problemu zapisu na poziomie transakcji.
Możesz ustawić obaw związany z zapisem na poziomie transakcji na startTransaction (). Jeśli problem z zapisem na poziomie transakcji nie jest ustawiony, domyślnie jest to obawa zapisu na poziomie sesji o zatwierdzenie. Jeśli zarówno obawy dotyczące zapisu na poziomie transakcji, jak i na poziomie sesji są niepokojące, obawa zapisu na poziomie transakcji automatycznie trafia do problemu zapisu na poziomie klienta.
Zarządzanie transakcjami Java MongoDB
Zarządzanie wszystkimi transakcjami może być mocną pracą, ale oto kilka sposobów zarządzania transakcjami. Możesz dodać obsługę transakcji za pomocą Java Spring Data i Java Mongo Drivers. API sterownika robi to:
try (Sesja Clientsession = Klient.Startession ()) < session.startTransaction(); try < collection.insertOne(session, documentOne); collection.insertOne(session, documentTwo); session.commitTransaction(); >Catch (wyjątek e) < session.abortTransaction(); >>
Sesje klientów uzyskane od klienta.Startession () powinien być krótkotrwały i zwolniony od razu, gdy nie jest już potrzebny. W ten sposób upewnij się, że uwzględnij polecenie Close ().
Powyższy fragment zawiera sesję (LSID) w każdym wierszu poleceń. ‘StartTransaction’ jest wysyłany z pierwszym poleceniem reprezentującym transakcję. A po zakończeniu transakcja jest popełniana przez wysyłanie ‘Commitranscation.’
Poprzednie wersje MongoDB nie obsługiwały transakcji, więc podstawową częścią jest skonfigurowanie MongootransactionManager w aplikacji. Transaction Manager to punkt wejścia do wsparcia transakcji opartych na adnotacji. Do konfiguracji użyj poniższego kodu:
@Configuration Configy < @Bean MongoTransactionManager transactionManager(MongoDbFactory dbFactory) < return new MongoTransactionManager(dbFactory); >> @Service Class Documentservice < private final MongoOperations operations; DocumentService(MongoOperations operations) < this.operations = operations; >@Transactional void insertdocuments () < operations.insert(documentOne); operations.insert(documentTwo); >>
To’S It. Nie ma wiele do zarządzania transakcjami Java MongoDB, więc jest kilka prostych kroków, które należy przyjrzeć.
Przepływ pracy transakcji Java MongoDB
Na pierwszym etapie korzystania z transakcji musisz rozpocząć sesję MongoDB za pośrednictwem kierowcy. W tym artykule następuje sesja MongoDB z MongoDB Java Driver. Następnie użyj tej sesji, aby wykonać grupę operacji bazy danych. Możesz uruchomić dowolne operacje CRUD (tworzenie, odczyt, aktualizacja i usuwanie) w wielu dokumentach, kolekcjach i odłamkach.
MongoDB’Transakcje S mają pochodzenie pojedynczego węzła, nawet w kontekście pojedynczego odłamka. Jego silnik magazynowy i protokół replikacji są wymieniane na ścieżkę dla transakcji. Poniżej znajduje się figura reprezentująca aplikację e -commerce posiadającą 2 klientów MongoDB.
Tutaj klient 1 wykonuje transakcje, a klient 2 czyta rekord zaktualizowany przez transakcję wywołaną przez klienta 1. Klient 1 wprowadza nowe zamówienie do kolekcji zamówień i aktualizuje zapasy uporządkowanego elementu (zakładając, że zamówienie jest pomyślnie wysyłane). Teraz jedyną obawą odpisu odpowiednim dla wysokiej trwałości danych jest większość. Większość oznacza większość replik, ja.mi., Większość replik to popełnienie zmian, zanim podstawowa rozpozna sukces zapisu do klienta.
Transakcja zostanie zablokowana, dopóki co najmniej jedno lub dwa wtórne nie wyciągną aktualizacji z pierwotnej za pomocą replikacji. Ten proces sprawia, że MongoDB’S TRANSAKCJA SILNEJ STRONY PIMA nieco wolniej niż inne transakcyjne noSQL.
Wniosek
Przeszliśmy przez MongoDB w Javie i transakcji’tworzenie, zarządzanie i przepływ pracy. Korzystanie z transakcji Java MongoDB w bazach danych gwarantuje, że baza danych utrzyma spójny stan po uruchomieniu grupy operacji.
MongoDB przyjął działanie transakcji z najbardziej znanych wzorców transakcyjnych zaimplementowanych w MySQL, Oracle i innych kwasowych relacyjnych bazach danych. Jak na ironię, funkcja modelowania danych MongoDB dla powiązanych danych, które mają być przechowywane razem w jednym dokumencie, wykorzystuje model dokumentu, który nie wymaga transakcji wielu udokumentów. Ale programiści podziwiają elastyczność w modelowaniu swoich danych. Zatem istnieje funkcja transakcji w MongoDB.
Dane HEVO, rurociąg danych bez kodu, może płynnie przesyłać dane z ogromnego morza ponad 100 źródeł, takich jak MongoDB i Atlas MongoDB do hurtowni danych lub wybranego miejsca docelowego do wizualizacji w narzędziu BI. Jest to niezawodna, całkowicie zautomatyzowana i bezpieczna usługa’t Wymagajcie napisania dowolnego kodu!
Jeśli używasz MongoDB jako system zarządzania bazą danych NoSQL i szukając alternatywy dla bezlitosnych dla ręcznej integracji danych, HEVO może bez wysiłku zautomatyzować to dla Ciebie. Hevo, z silną integracją z ponad 100 źródłami i narzędziami BI (W tym ponad 40 darmowych źródeł), pozwala nie tylko eksportować i ładować dane, ale także przekształcić i wzbogacić swoje dane oraz uczynić je gotowymi w mgnieniu oka.
Chcesz zabrać Hevo na przejażdżkę? Zarejestruj się na 14-dniowy bezpłatny proces i uproszcz proces integracji danych. Sprawdź szczegóły cen, aby zrozumieć, który plan spełnia wszystkie Twoje potrzeby biznesowe.
Opowiedz nam o swoim doświadczeniu w poznaniu Transakcja Java MongoDB! Podziel się z nami swoimi przemyśleniami w sekcji komentarzy poniżej.