Ако сте използвали някаква форма на система за управление на релационна база данни от известно време, вероятно сте се сблъсквали с името MongoDB. Въведена за първи път през 2009 г., днес mongoDb е една от най-популярните системи за управление на релационни бази данни в индустрията. Основната причина за безумната му популярност въпреки наличието на по-стари мениджъри на софтуер за релационни бази данни, като MySql, присъстващи на пазара, е широкият брой числа и голяма гъвкавост, която носи на масата. Използването на MongoDB елиминира много нужди, една от които е необходимостта от създаване на база данни и дефиниране на типа данни всеки път, когато се стартира нов проект. Дневният ред на статията за клиента на MongoDB:
- Предварителни условия за MongoDB Client
- Създаване на проекта в Maven
- Добавяне на първата ви услуга за почивка на JSON
- Конфигуриране на базата данни MongoDB
- Изпълнение на конфигурираната база данни MongoDB
- Изработване на предния край
- Опростяване на клиента MongoDB с помощта на BSON кодек
- Краен код
Но за да постигнете максимална функционалност от MongoDB, човек трябва да познава клиента MongoDB и в тази статия ще обсъдим точно това.
Предварителни условия за MongoDB Client
За да изпълните тази статия изцяло, ще трябва първо да изпълните следните предпоставки.
В системата вече има IDE.
Java Development Kit или JDK версия 1.8 и по-нова, инсталирани с правилно конфигуриран JAVA_HOME.
инсталиран Docker или MongoDB.
Apache Maven версия 3.5.3 и по-нова.
Архитектурата, която създадохме и използвахме в това ръководство, е една от най-простите. Когато се изпълни, потребителят може лесно да добавя данни и елементи в списък, след което той автоматично ще се актуализира в базата данни.
Заедно с това сме се уверили, че цялата комуникация между данните и сървъра е в JSON и всички данни се съхраняват в MongoDB.
Първи стъпки
За да започнете с този проект, следвайте стъпките, описани по-долу.
Стъпка №1:Създаване на проекта в Maven
Първата стъпка винаги е да създадете нов проект и за да направите това, използвайте следния код.
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"
Когато изпълните горната команда, IDE ще импортира клиентите JSON-B, MongoDb, както и RESTEasy/JAX-RS във вашата система.
Продължаваме със Стъпка 2.
Стъпка №2:Добавяне на първата си услуга за почивка на JSON
За да направите това, използвайте кода по-долу.package org.acme.rest.json;import java.util.Objects;public class Fruit {private String name;private String description;public Fruit() {}public Fruit (Име на низ, описание на низ) {this.name =name;this.description =description;}public String getName() {return name;}public void setName(String name) {this.name =name;}public String getDescription( ) {връщане на описание;}public void setDescription(описание на низ) {this.description =description;}@Overridepublic boolean equals(Object obj) {if (!(obj instanceof Fruit)) {return false;}Fruit other =(Fruit) obj;return Objects.equals(other.name, this.name);}@Overridepublic int hashCode() {връщане на Objects.hash(this.name);}}
С горния пример първо създадохме плода, който по-късно ще бъде използван в програмата.
След това трябва да създадем файла org.acme.rest.json.FruitService, който ще бъде потребителският слой на нашето приложение. За да направите това, използвайте кода по-долу.
package org.acme.rest.json;import com.mongodb.client.MongoClient;import com.mongodb.client.MongoCollection;import com.mongodb.client.MongoCursor;import org.bson.Document;importprijavasex.enter .context.ApplicationScoped;импорт javax.inject.Inject;импорт java.util.ArrayList;импорт java.util.List;@ApplicationScopedpublic клас FruitService {@Inject MongoClient mongoClient;public List list(){List list<> Arrow( );MongoCursor cursor =getCollection().find().iterator();try {while (cursor.hasNext()) {Document document =cursor.next();Fruit fruit =new Fruit();fruit.setName(document .getString("name"));fruit.setDescription(document.getString("description"));list.add(fruit);}} накрая {cursor.close();}return list;}public void add(Fruit плод){Document document =new Document().append("name", fruit.getName()).append("description", fruit.getDescription());getCollection().insertOne(document);}private MongoCollection getCollection (){return mongoClient.getDatabase("fruit").getCollection ("fruit");}}Сега трябва да редактираме класа org.acme.rest.json.FruitResource, за да отговаря на нашите нужди. За да направите това, използвайте кода по-долу.@Path("/fruits")@Produces(MediaType.APPLICATION_JSON)@Consumes(MediaType.APPLICATION_JSON)обществен клас FruitResource {@Inject FruitService fruitService;@GETpublic List list() {retur fruitService.list();}@POSTpublic List add(Fruit fruit) {fruitService.add(fruit);return list();}}
Продължаваме със Стъпка 3.
Стъпка №3:Конфигуриране на базата данни mongoDb
Синтаксисът, както и стандартният код за конфигуриране на базата данни mongoDb са посочени по-долу.
# конфигурирайте клиента mongoDB за набор от реплика от два nodesquarkus.mongodb.connection-string =mongodb://mongo1:27017,mongo2:27017
В нашия случай ще използваме следния код, за да конфигурираме базата данни.
# конфигурирайте клиента mongoDB за набор от реплика от два nodesquarkus.mongodb.connection-string =mongodb://localhost:27017
Продължаваме със Стъпка 4.
Стъпка #4:Стартиране на конфигурираната база данни MongoDB
Следващата стъпка е да стартираме базата данни MongoDB, която току-що създадохме. За да направите това, използвайте кода по-долу.
docker run -ti --rm -p 27017:27017 mongo:4.0
Продължаваме със Стъпка 5.
Стъпка #5:Изработване на предния край
Сега, когато цялата работа в задната част на приложението е свършена, нека да разгледаме кода, използван за кодиране на предния край на нашето приложение.
пакет org.acme.rest.json;import io.quarkus.mongodb.ReactiveMongoClient;import io.quarkus.mongodb.ReactiveMongoCollection;import org.bson.Document;import javax.enterprise.context.ApplicationScoped.injectport javaxed; .Inject;import java.util.List;import java.util.concurrent.CompletionStage;@ApplicationScopedpublic class ReactiveFruitService {@InjectReactiveMongoClient mongoClient;public CompletionStagelist(){return getCollection(map).> {Fruit fruit =new Fruit();fruit.setName(doc.getString("name"));fruit.setDescription(doc.getString("description"));връщане на плодове;}).toList().run( );}public CompletionStage add(Fruit fruit){Document document =new Document().append("name", fruit.getName()).append("description", fruit.getDescription());return getCollection(). insertOne(document);}private ReactiveMongoCollection getCollection(){return mongoClient.getDatabase("fruit").getCollection("fruit");}}package org.acme.rest.json;import javax.inject.Inject;import javax. ws.rs.*;имп ort javax.ws.rs.core.MediaType;импорт java.util.List;импорт java.util.concurrent.CompletionStage;@Path("/reactive_fruits")@Produces(MediaType.APPLICATION_JSON)@Consumes(MediaType.APPLICATION)public_JSON клас ReactiveFruitResource {@Inject ReactiveFruitService fruitService;@GETpublic CompletionStage
list() {return fruitService.list();}@POSTpublic CompletionStage
add(Fruit fruit) {fruitService.add(fruit);return); }}
В горния пример използваме реактивен mongoDb клиент, за да улесним формирането на предния край.
Продължаваме със Стъпка 6.
Стъпка #6:Опростяване на клиента mongoDb с помощта на кодек BSON
За да направите това, използвайте кода по-долу.
пакет 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;public class FruitCodec внедрява CollectibleCodec {частен окончателен кодек documentCodec;public FruthisCodec() FruthisCodec() 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 generateIdIfAbsentFromDocument(Fru документ) {if (!documentHasId(document)) {document.setId(UUID.randomUUID().toString());}връщане на документ;}@Overridepublic булев documentHasId(Fruit docu ment) {return document.getId() !=null;}@Overridepublic BsonValue getDocumentId(Fruit document) {връщане на нов BsonString(document.getId());}@Overridepublic Fruit decode(BsonReader reader =DecoderContext decoder) {DocumentContext decoder documentCodec.decode(reader, decoderContext);Fruit fruit =new Fruit();if (document.getString("id") !=null) {fruit.setId(document.getString("id"));}fruit.setName (document.getString("name"));fruit.setDescription(document.getString("description"));връщане на плодове;}}
Сега ще използваме CodecProvider, за да свържем това с вече наличния клас Fruit.
пакет 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 внедрява CodecProvider {@Overridepublic Codec get(Class clazz, CodecRegistry registry) {if (clazz ==Fruit.class) {връщане (Codec) new FruitCodec();};}връщане /предварително>Продължаваме със Стъпка 7.
Стъпка №7:Окончателен код
Окончателният код за това приложение ще изглежда така.
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;ApplicationScope .inject.Inject;import java.util.ArrayList;import java.util.List;@ApplicationScopedpublic class CodecFruitService {@Inject MongoClient mongoClient;public List list(){List list =new ArrayList<>();MongoCursor cursor(cursor getCursor ).find().iterator();опитайте {while (cursor.hasNext()) {list.add(cursor.next());}} накрая {cursor.close();}return list;}public void add (Fruit fruit){getCollection().insertOne(fruit);}private MongoCollection getCollection(){return mongoClient.getDatabase("fruit").getCollection("fruit", Fruit.class);}}Заключение
Сега знаете как да конфигурирате и използвате клиента MongoDB във вашата система. Продължете и опитайте тези кодове във вашата система и ни уведомете за вашия опит.
Резюме на статия
Научете всичко за клиента MongoDB и как можете да конфигурирате същия във вашата система за различни приложения. Прочетете, за да научите повече.
С това стигаме до края на “ MongoDB клиент” статия.
Предстоящи партиди за учебен курс за сертифициране на MongoDB
Име на курса | Дата | |
---|---|---|
Курс за обучение за сертифициране MongoDB | Курсът започва на 4 юни 2022 г. 4 юни SAT&SUN (партида през уикенда) | Преглед на подробностите |
Курс за обучение за сертифициране MongoDB | Курсът започва на 6 август 2022 г. 6 август SAT&SUN (партида за уикенда) | Преглед на подробностите |