Pokud již nějakou dobu používáte jakoukoli formu systému správy relačních databází, pravděpodobně jste se setkali s názvem MongoDB. MongoDb, který byl poprvé představen v roce 2009, je dnes jedním z nejpopulárnějších systémů pro správu relačních databází v oboru. Hlavním důvodem jeho šílené popularity navzdory přítomnosti starších softwarových manažerů relačních databází, jako je MySql na trhu, je široký počet a velká všestrannost, kterou přináší. Použití MongoDB eliminuje mnoho potřeb, jednou z nich je potřeba vytvořit databázi a definovat datový typ pokaždé, když je spuštěn nový projekt. Agenda článku klienta MongoDB:
- Předpoklady pro klienta MongoDB
- Vytvoření projektu na Maven
- Přidání vaší úplně první odpočinkové služby JSON
- Konfigurace databáze MongoDB
- Spuštění nakonfigurované databáze MongoDB
- Vytvoření frontendu
- Zjednodušení klienta MongoDB pomocí kodeku BSON
- Konečný kód
Abyste však z MongoDB dosáhli maximální funkčnosti, musíte být obeznámeni s klientem MongoDB a v tomto článku budeme diskutovat právě o tom.
Předpoklady pro klienta MongoDB
Aby byl tento článek celý, musíte nejprve splnit následující předpoklady.
Mějte ve svém systému IDE.
Java Development Kit nebo JDK verze 1.8 a vyšší nainstalovaná se správně nakonfigurovanou JAVA_HOME.
Nainstalovaný Docker nebo MongoDB.
Apache Maven verze 3.5.3 a vyšší.
Architektura, kterou jsme vytvořili a použili v této příručce, je jednou z nejjednodušších. Po spuštění může uživatel snadno přidat data a prvky do seznamu, po kterém se automaticky aktualizuje v databázi.
Spolu s tím jsme zajistili, že veškerá komunikace mezi daty a serverem probíhá v JSON a všechna data jsou uložena v MongoDB.
Začínáme
Abyste mohli začít s tímto projektem, postupujte podle kroků uvedených níže.
Krok č. 1:Vytvoření projektu na Maven
Prvním krokem je vždy vytvoření nového projektu a k tomu použijte následující kód.
mvn io.quarkus:quarkus-maven-plugin:0.22.0:create -DprojectGroupId=org.acme -DprojectArtifactId=using-mongodb-client -DclassName="org.acme.rest.json.FruitResource" -Dpath="/fruits" -Dextensions="resteasy-jsonb,mongodb-client"
Když spustíte výše uvedený příkaz, IDE naimportuje do vašeho systému klienty JSON-B, MongoDb a také RESTEasy/JAX-RS.
Pokračujte krokem 2.
Krok č. 2:Přidání vaší úplně první odpočinkové služby JSON
K tomu použijte níže uvedený kód.package org.acme.rest.json;import java.util.Objects;public class Fruit {private String name;private String description;public Fruit() {}public Fruit (Název řetězce, Popis řetězce) {this.name =název;this.description =description;}public String getName() {return name;}public void setName(název řetězce) {this.name =name;}public String getDescription( ) {return description;}public void setDescription(String description) {this.description =description;}@Overridepublic boolean equals(Object obj) {if (!(obj instanceof Fruit)) {return false;}Ovoce jiné =(Ovoce) obj;return Objects.equals(other.name, this.name);}@Overridepublic int hashCode() {return Objects.hash(this.name);}}
Ve výše uvedeném příkladu jsme nejprve vytvořili Fruit, který bude později použit v programu.
Dále musíme vytvořit soubor org.acme.rest.json.FruitService, který bude uživatelskou vrstvou naší aplikace. Chcete-li to provést, použijte níže uvedený kód.
package org.acme.rest.json;import com.mongodb.client.MongoClient;import com.mongodb.client.MongoCollection;import com.mongodb.client.MongoCursor;import org.bson.Document;import javax.enterprise .context.ApplicationScoped;import javax.inject.Inject;import java.util.ArrayList;import java.util.List;@ApplicationScopedpublic class FruitService {@Inject MongoClient mongoClient;public List list(){List list =new ArrayList<>( );Kurzor MongoCursor =getCollection().find().iterator();try {while (cursor.hasNext()) {Dokument dokumentu =kurzor.next();Ovoce ovoce =new Fruit();fruit.setName(document .getString("name"));fruit.setDescription(document.getString("popis"));list.add(ovoce);}} nakonec {cursor.close();}return list;}public void add(Fruit fruit){Document document =new Document().append("name", fruit.getName()).append("description", fruit.getDescription());getCollection().insertOne(document);}private MongoCollection getCollection (){return mongoClient.getDatabase("ovoce").getCollection ("fruit");}}Nyní musíme upravit třídu org.acme.rest.json.FruitResource tak, aby vyhovovala našim potřebám. Chcete-li to provést, použijte níže uvedený kód.@Path("/fruits")@Produces(MediaType.APPLICATION_JSON)@Consumes(MediaType.APPLICATION_JSON)public class FruitResource {@Inject FruitService fruitService;@GETpublic List list() {return fruitService.list();}@POSTpublic List add(Fruit fruit) {fruitService.add(fruit);return list();}}
Pokračujte krokem 3.
Krok č. 3:Konfigurace databáze mongoDb
Syntaxe i standardní kód pro konfiguraci databáze mongoDb jsou uvedeny níže.
# nakonfigurujte klienta mongoDB pro sadu replik dvou nodesquarkus.mongodb.connection-string =mongodb://mongo1:27017,mongo2:27017
V našem případě použijeme ke konfiguraci databáze následující kód.
# nakonfigurujte klienta mongoDB pro sadu replik dvou nodesquarkus.mongodb.connection-string =mongodb://localhost:27017
Pokračujte krokem 4.
Krok #4:Spuštění nakonfigurované databáze MongoDB
Dalším krokem je spuštění databáze MongoDB, kterou jsme právě vytvořili. Chcete-li to provést, použijte níže uvedený kód.
docker run -ti --rm -p 27017:27017 mongo:4.0
Pokračujte krokem 5.
Krok č. 5:Vytvoření frontendu
Nyní, když je veškerá práce na backendu aplikace hotová, pojďme se podívat na kód používaný ke kódování frontendu naší aplikace.
package org.acme.rest.json;import io.quarkus.mongodb.ReactiveMongoClient;import io.quarkus.mongodb.ReactiveMongoCollection;import org.bson.Document;import javax.enterprise.context.ApplicationScoped;import javax.inject .Inject;import java.util.List;import java.util.concurrent.CompletionStage;@ApplicationScopedpublic class ReactiveFruitService {@InjectReactiveMongoClient mongoClient;public CompletionStageseznam(){return getCollection().find().map(doc -)> {Fruit fruit =new Fruit();fruit.setName(doc.getString("name"));fruit.setDescription(doc.getString("description"));return fruit;}).toList().run( );}public CompletionStage add(Fruit fruit){Document document =new Document().append("name", fruit.getName()).append("description", fruit.getDescription());return getCollection(). insertOne(document);}soukromá ReactiveMongoCollection getCollection(){return mongoClient.getDatabase("ovoce").getCollection("ovoce");}}balíček org.acme.rest.json;import javax.inject.Inject;import javax. ws.rs.*;imp ort javax.ws.rs.core.MediaType;import java.util.List;import java.util.concurrent.CompletionStage;@Path("/reactive_fruits")@Produces(MediaType.APPLICATION_JSON)@Consumes(MediaType.APPLICATION_JSON) class ReactiveFruitResource {@Inject ReactiveFruitService fruitService;@GETpublic CompletionStage
seznam() {return fruitService.list();}@POSTpublic CompletionStage add(Fruit fruit) {fruitService.add(ovoce);vrácení seznamu(); }}
Ve výše uvedeném příkladu využíváme reaktivního klienta mongoDb k usnadnění vytvoření frontendu.
Pokračujte krokem 6.
Krok #6:Zjednodušení klienta mongoDb pomocí kodeku BSON
Chcete-li to provést, použijte níže uvedený kód.
package org.acme.rest.json.codec;import com.mongodb.MongoClient;import org.acme.rest.json.Fruit;import org.bson.*;import org.bson.codecs.Codec;import org .bson.codecs.CollectibleCodec;import org.bson.codecs.DecoderContext;import org.bson.codecs.EncoderContext;import java.util.UUID;veřejná třída FruitCodec implementuje CollectibleCodec {private final Codec documentCodec;public FruitCodec() {this. documentCodec =MongoClient.getDefaultCodecRegistry().get(Document.class);}@Overridepublic void encode(BsonWriter Writer, Fruit fruit, EncoderContext encoderContext) {Document doc =new Document();doc.put("name", fruit.getName ());doc.put("description", fruit.getDescription());documentCodec.encode(writer, doc, encoderContext);}@Overridepublic Class getEncoderClass() {return Fruit.class;}@Overridepublic Fruit generationIdIfAbsentFromDocument(Fruit document) {if (!documentHasId(document)) {document.setId(UUID.randomUUID().toString());}return document;}@Overridepublic booleovský dokumentHasId(Fruit docu ment) {return document.getId() !=null;}@Overridepublic BsonValue getDocumentId(Fruit document) {return new BsonString(document.getId());}@Overridepublic Fruit decode (čtečka BsonReader, DecoderContext decumentContext) {Document decoderContext documentCodec.decode(reader, decoderContext);Fuit fruit =new Fruit();if (document.getString("id") !=null) {fruit.setId(document.getString("id"));}fruit.setName (document.getString("název"));fruit.setDescription(document.getString("popis"));return fruit;}}
Nyní použijeme CodecProvider k propojení s již existující třídou Fruit.
balíček org.acme.rest.json.codec;import org.acme.rest.json.Fruit;import org.bson.codecs.Codec;import org.bson.codecs.configuration.CodecProvider;import org.bson. codecs.configuration.CodecRegistry;public class FruitCodecProvider implementuje CodecProvider {@Overridepublic Codec get(Class clazz, CodecRegistry registry) {if (clazz ==Fruit.class) {return (Codec) new FruitCodec();}return null;}}Pokračujte krokem 7.
Krok č. 7:Konečný kód
Konečný kód pro tuto aplikaci bude vypadat nějak takto.
package org.acme.rest.json;import com.mongodb.client.MongoClient;import com.mongodb.client.MongoCollection;import com.mongodb.client.MongoCursor;import javax.enterprise.context.ApplicationScoped;import javax .inject.Inject;import java.util.ArrayList;import java.util.List;@ApplicationScopedpublic class CodecFruitService {@Inject MongoClient mongoClient;public List list(){List list =new ArrayList<>();MongoCursor kurzor =getCollection( ).find().iterator();zkuste {while (cursor.hasNext()) {list.add(cursor.next());}} nakonec {cursor.close();}return list;}public void add (Fruit fruit){getCollection().insertOne(fruit);}soukromá MongoCollection getCollection(){return mongoClient.getDatabase("fruit").getCollection("fruit", Fruit.class);}}Závěr
Nyní víte, jak nakonfigurovat a používat klienta MongoDB ve vašem systému. Neváhejte a vyzkoušejte tyto kódy ve svém systému a dejte nám vědět o svých zkušenostech.
Shrnutí článku
Zjistěte vše o klientovi MongoDB a o tom, jak jej můžete nakonfigurovat ve svém systému pro různá použití. Čtěte dále a dozvíte se více.
Tím se dostáváme na konec “ Klient MongoDB” článek.
Nadcházející dávky pro certifikační kurz MongoDB
Název kurzu | Datum | |
---|---|---|
Certifikační kurz MongoDB | Kurz začíná 4. června 2022 4. června SAT&SUN (víkendová dávka) | Zobrazit podrobnosti |
Certifikační kurz MongoDB | Kurz začíná 6. srpna 2022 6. srpna SAT&SUN (víkendová dávka) | Zobrazit podrobnosti |