Semua yang Anda Perlu Tahu Mengenai Pelanggan MongoDB



Artikel ini akan memberi anda pengetahuan terperinci dan menyeluruh mengenai Pelanggan MongoDB dengan semua ciri dan Kegunaannya.

Sekiranya anda telah menjadi bentuk sistem pengurusan pangkalan data relasional untuk beberapa waktu sekarang, anda mungkin telah menemui nama . Pertama kali diperkenalkan pada tahun 2009, hari ini mongoDb adalah salah satu sistem pengurusan pangkalan data hubungan yang paling popular di industri ini. Sebab utama di sebalik popularitinya yang gila walaupun terdapat pengurus perisian pangkalan data hubungan lama seperti MySql yang terdapat di pasaran adalah jumlah yang banyak dan fleksibiliti yang hebat. Penggunaan MongoDB menghilangkan banyak keperluan, salah satunya ialah keperluan membuat pangkalan data dan menentukan jenis data setiap kali projek baru dimulakan. Agenda artikel pelanggan MongoDB:

untuk apa mongodb digunakan





Tetapi untuk mencapai kefungsian maksimum dari MongoDB, seseorang perlu mengenal klien MongoDB dan dalam artikel ini, kita akan membincangkannya.

Prasyarat untuk Pelanggan MongoDB

Agar artikel ini dapat sepenuhnya, anda perlu memenuhi syarat-syarat berikut.



Mempunyai IDE yang sudah ada di sistem anda.
Java Development Kit atau JDK versi 1.8 ke atas dipasang dengan JAVA_HOME dikonfigurasi dengan betul.
Docker atau MongoDB dipasang.
Apache Maven versi 3.5.3 dan lebih tinggi.

Senibina yang telah kami buat dan gunakan dalam panduan ini adalah salah satu yang paling mudah. Apabila dijalankan pengguna dapat menambahkan data dan elemen dalam daftar dengan mudah, setelah itu secara automatik ia akan dikemas kini dalam pangkalan data.

Logo Pelanggan MongoDB



Bersamaan dengan ini, kami telah memastikan bahawa semua komunikasi antara data dan pelayan berada di JSON dan semua data disimpan di MongoDB.

Bermula

Untuk memulakan projek ini, ikuti langkah-langkah yang dinyatakan di bawah.

Langkah # 1: Membuat projek di Maven

Langkah pertama adalah membuat projek baru dan untuk melakukan ini, gunakan kod berikut.

mvn io.quarkus: quarkus-maven-plugin: 0.22.0: create -DprojectGroupId = org.acme -DprojectArtifactId = using-mongodb-client -DclassName = 'org.acme.rest.json.FruitResource' -Dpath = '/ buah-buahan '-Dextensions =' resteasy-jsonb, mongodb-client '

Apabila anda menjalankan perintah di atas, IDE akan mengimport klien JSON-B, MongoDb dan juga RESTEasy / JAX-RS ke sistem anda.

Melangkah dengan Langkah 2.

Langkah # 2: Menambah perkhidmatan rehat JSON pertama anda

Untuk melakukan ini, gunakan kod di bawah. pakej org.acme.rest.json import java.util.Objects buah kelas awam {private String name private String description public Fruit () {} public Fruit (String name, String description) {this.name = name this.description = description } public String getName () {return name} public void setName (String name) {this.name = name} public String getDescription () {return description} public void setDescription (String description) {this.description = description} @Override awam boolean sama dengan (Objek obj) {if (! (obj instanceof Fruit)) {return false} Fruit other = (Fruit) obj return Objects.equals (other.name, this.name)} @Override public int hashCode () {return Objects.hash (nama ini.)}}

Dengan contoh di atas, pertama kali kita membuat Buah yang kemudiannya akan digunakan dalam program ini.

Seterusnya kita perlu membuat fail org.acme.rest.json.FruitService yang akan menjadi lapisan pengguna aplikasi kita. Untuk melakukan ini, gunakan kod di bawah.

pakej 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 @ApplicationScoped public class FruitService {@Inject MongoClient mongoClient public List list () {List list = new ArrayList () MongoCursor kursor = getCollection (). Cari (). Iterator (). Iterator ( ) cuba {while (cursor.hasNext ()) {Document document = cursor.next () Fruit fruit = new Fruit () fruit.setName (document.getString ('name')) fruit.setDescription (document.getString ('keterangan ')) list.add (fruit)}} akhirnya {cursor.close ()} return list} public void add (Fruit fruit) {Document document = new Document () .append (' name ', fruit.getName ()) .append ('description', fruit.getDescription ()) getCollection (). insertOne (document)} peribadi MongoCollection getCollection () {return mongoClient.getDatabase ('fruit'). getCol lection ('fruit')}} Sekarang kita perlu mengedit kelas org.acme.rest.json.FruitResource untuk memenuhi keperluan kita. Untuk melakukan ini, gunakan kod di bawah. @Path ('/ fruit') @Produces (MediaType.APPLICATION_JSON) @Consumes (MediaType.APPLICATION_JSON) kelas awam FruitResource {@Inject FruitService fruitService @Daftar senarai awam () {return fruitService.list ()} @POST senarai awam tambah (Buah buah) {fruitService.add (buah) senarai pemulangan ()}}

Teruskan dengan Langkah 3.

Langkah # 3: Mengkonfigurasi pangkalan data mongoDb

Sintaks serta kod standard untuk mengkonfigurasi pangkalan data mongoDb adalah seperti yang diberikan di bawah.

apa itu pengimbas di java
# konfigurasikan klien mongoDB untuk set replika dua nod quarkus.mongodb.connection-string = mongodb: // mongo1: 27017, mongo2: 27017

Dalam kes kami, kami akan menggunakan kod berikut untuk mengkonfigurasi pangkalan data.

# konfigurasikan klien mongoDB untuk set replika dua nod quarkus.mongodb.connection-string = mongodb: // localhost: 27017

Teruskan dengan Langkah 4.

Langkah # 4: Menjalankan pangkalan data MongoDB yang dikonfigurasi

Langkah seterusnya adalah menjalankan pangkalan data MongoDB yang baru kita buat. Untuk melakukan ini, gunakan kod di bawah.

docker run -ti --rm -p 27017: 27017 mongo: 4.0

Teruskan dengan Langkah 5.

Langkah # 5: Membuat bahagian depan

Sekarang setelah semua pekerjaan di bahagian belakang aplikasi selesai, mari kita lihat kod yang digunakan untuk membuat kod bahagian depan aplikasi kita.

pakej 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 @ApplicationScoped public class ReactiveFruitService {@Inject ReactiveMongoClient mongoClient public CompletionStage list () {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) {Dokumen dokumen = Dokumen baru () .append ('name', fruit.getName ()) .append ('description', fruit.getDescription ()) return getCollection (). insertOne (document)} peribadi ReactiveMongoCollection getCollection () {return mongoClient.getDatabase ('buah') ) .getCollection ('fruit')}} pakej org.acme.rest.json import javax.inject.Inject import javax.ws.rs. * i mport javax.ws.rs.core.MediaType import java.util.Daftar import java.util.concurrent.CompletionStage @Path ('/ reactive_fruits') @Produces (MediaType.APPLICATION_JSON) @Consumes (MediaType.APPLICATION_JSON) kelas awam ReaktifFruit @Inject ReactiveFruitService fruitService @GET public CompletionStage list () {return fruitService.list ()} @POST public CompletionStage add (Fruit fruit) {fruitService.add (buah) senarai kembali ()}}

Dalam contoh di atas, kami memanfaatkan pelanggan mongoDb yang reaktif untuk memudahkan pembentukan bahagian depan.

Teruskan dengan Langkah 6.

Langkah # 6: Memudahkan pelanggan mongoDb menggunakan codec BSON

Untuk melakukan ini, gunakan kod di bawah.

perbezaan antara final akhirnya dan final
pakej 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 kelas awam FruitCodec menerapkan CollectibleCodec {private final Codec documentCodec public FruitCodec () {this.documentCodec = MongoClient.getDefaultCodec. )} @ Override public void encode (penulis BsonWriter, Fruit fruit, EncoderContext encoderContext) {Document doc = new Document () doc.put ('name', fruit.getName ()) doc.put ('description', fruit.getDescription ()) documentCodec.encode (penulis, doc, encoderContext)} @Override public Class getEncoderClass () {return Fruit.class} @Override public Fruit menghasilkanIdIfAbsentFromDocument (Dokumen buah) {if (! documentHasId (document)) {document.setId ( UUID.randomUUID (). ToString ())} kembalikan dokumen} @ Override public boolean documentHasId ( Buah dokumen) {return document.getId ()! = Null} @Override public BsonValue getDocumentId (Fruit document) {return BsonString baru (document.getId ())} @ Override public Fruit decode (BsonReader reader, DecoderContext decoderContext) {Dokumen dokumen = documentCodec.decode (pembaca, decoderContext) Buah buah = Buah baru () jika (document.getString ('id')! = null) {fruit.setId (document.getString ('id'))} fruit.setName (dokumen .getString ('name')) fruit.setDescription (document.getString ('description')) mengembalikan buah}}

Sekarang kita akan menggunakan CodecProvider untuk menghubungkannya dengan kelas Buah yang sudah ada.

pakej 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 kelas awam FruitCodecProvider melaksanakan CodecProvider {@Override public Codec get (Class clazz, CodecRegistry registry) {if (clazz == Fruit.class) {return (Codec) FruitCodec baru ()} return null}}

Melangkah dengan Langkah 7.

Langkah # 7: Kod Akhir

Kod terakhir untuk aplikasi ini, akan kelihatan seperti ini.

pakej 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 @ApplicationScoped public class CodecFruitService {@Inject MongoClient mongoClient public List list () {List list = new ArrayList () MongoCursor kursor = getCollection (). Cari (). Iterator () cuba {sementara (kursor .hasNext ()) {list.add (cursor.next ())}} akhirnya {cursor.close ()} return list} public void add (Fruit fruit) {getCollection (). insertOne (fruit)} MongoCollection getCollection peribadi ( ) {return mongoClient.getDatabase ('fruit'). getCollection ('fruit', Fruit.class)}}}

Kesimpulannya

Sekarang anda tahu cara mengkonfigurasi dan menggunakan klien MongoDB dalam sistem anda. Teruskan dan cuba kod ini dalam sistem anda dan beritahu kami pengalaman anda.

Ringkasan Artikel

Ketahui semua tentang pelanggan MongoDB dan bagaimana anda boleh mengkonfigurasi yang sama dalam sistem anda untuk pelbagai kegunaan. Teruskan membaca untuk mengetahui lebih lanjut.

Dengan ini, kita sampai ke penghujung ' Pelanggan MongoDB ' artikel.