MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Cara menggunakan Spring Boot dengan MongoDB

Spring Boot adalah kerangka kerja sumber terbuka berbasis Java untuk membuat layanan mikro, yang memungkinkan pengembang untuk menyebarkan dan mengembangkan layanan secara mandiri. Setiap layanan yang berjalan memiliki prosesnya sendiri, sehingga mencapai model ringan yang mendukung aplikasi bisnis. Layanan mikro memiliki beberapa keunggulan:skalabilitas sederhana, konfigurasi minimum, waktu produksi yang lebih singkat, kompatibilitas wadah, dan pengembangan yang mudah.

Spring boot menyediakan platform yang baik bagi pengembang untuk membangun aplikasi pegas yang berdiri sendiri dan siap produksi yang dapat Anda jalankan; dengan demikian, seseorang dapat memulai dengan konfigurasi minimum tanpa memerlukan seluruh konfigurasi konfigurasi pegas.

Misalnya, menangani manajemen ketergantungan rumit untuk proyek-proyek besar; Spring Boot dengan demikian menyelesaikan kesulitan ini dengan menyediakan satu set dependensi untuk kenyamanan pengembang. Aplikasi Spring Boot memindai semua kacang dan deklarasi paket saat aplikasi diinisialisasi; Selain itu, anotasi aplikasi Spring Boot mencakup pemindaian komponen, Konfigurasi Otomatis, dan Konfigurasi Boot Musim Semi.

Fitur Boot Musim Semi

Di bawah ini adalah beberapa fitur standar spring-boot:

  1. Ini secara otomatis mengonfigurasi perpustakaan Spring dan pihak ketiga jika memungkinkan
  2. Ini memberikan dependensi 'pemula' yang memiliki opini untuk menyederhanakan konfigurasi build Anda
  3. Tidak ada persyaratan untuk konfigurasi XML dan Tidak ada pembuatan kode
  4. Selain itu, ia menawarkan fitur siap produksi seperti metrik konfigurasi eksternal dan health check
  5. Ini memiliki Tomcat, Undertow secara langsung, atau Jetty; dengan demikian, tidak perlu menyebarkan file WAR
  6. Juga, ini membuat aplikasi Spring yang berdiri sendiri

Keuntungan Spring Boot bagi pengembang

  1. Ini meningkatkan produktivitas
  2. Mempermudah dalam mengembangkan dan memahami aplikasi pegas
  3. Ini mengurangi pengembangan waktu.

 Tujuan Boot Musim Semi

Ini dirancang untuk:

  1. Mengembangkan aplikasi pegas siap produksi dengan cara yang lebih mudah
  2. Hindari konfigurasi XML yang rumit di Spring
  3. Kurangi waktu pengembangan dan jalankan aplikasi secara mandiri
  4. Tawarkan cara yang lebih mudah untuk memulai aplikasi.

Spring Boot lebih disukai karena fitur dan manfaat yang diberikannya seperti:

  1. Penyediaan pemrosesan batch yang kuat dan pengelolaan titik akhir REST
  2. Penyediaan cara yang lebih fleksibel untuk mengonfigurasi Transaksi Data, Java Beans j, dan konfigurasi XML.
  3. Menawarkan anotasi- berdasarkan aplikasi pegas
  4. Menyederhanakan manajemen dependensi, termasuk Servlet Container yang disematkan
  5. Tidak diperlukan konfigurasi manual karena semua yang ada di Spring Boot dikonfigurasi secara otomatis

MongoDB adalah program database berorientasi dokumen yang tersedia untuk sumber, lintas platform. Ini adalah database dokumen yang menyediakan skalabilitas tinggi dan fleksibilitas program. Selain itu, ia menawarkan kueri dan pengindeksan cepat kepada pengguna, yang dalam jangka panjang meningkatkan kinerjanya.

MongoDB diklasifikasikan sebagai program database NoSQL dan menggunakan dokumen mirip JSON dengan skema opsional dan fleksibel. Basis data ini dikembangkan oleh MongoDB Inc., sebuah perusahaan berbasis di Amerika yang mengembangkan dan menyediakan dukungan komersial untuk basis data yang tersedia sumber. MongoDB dilisensikan di bawah Lisensi Publik Sisi Server (SSPL).

MongoDB telah mengalami peningkatan berkelanjutan pada fitur-fiturnya karena pengembangan versi yang sedang berlangsung misalnya;

TANGGAL VERSI CATATAN FITUR
Desember 2009 1.2 Fungsi JavaScript yang disimpan
Pembuatan indeks lebih cepat
Lebih banyak indeks per koleksi
Waktu sinkronisasi yang dapat dikonfigurasi
Beberapa fitur dan perbaikan kecil
Agustus 2010 1.6 Peta/kurangi
Set replika
Sharding siap produksi
Dukungan untuk IPv6
Maret 2013 2.4 Indeks hash
Beralih ke mesin JavaScript V8
Dukungan geospasial yang ditingkatkan
Penelusuran teks yang disempurnakan
Peningkatan keamanan
8 April 2014 2.6 Peningkatan mesin kueri
Peningkatan agregasi
Peningkatan keamanan
Protokol operasi tulis baru
Integrasi pencarian teks
3 Maret 2015 3.0 Fungsi penjelasan yang ditingkatkan
API mesin penyimpanan yang dapat dicolokkan
Manajer Operasi MongoDB
Dukungan mesin penyimpanan Wired Tiger
Otentikasi SCRAM-SHA-1
8 Desember 2015 3.2 Peningkatan pemilihan replikasi
Validasi dokumen
Mesin penyimpanan Wired Tiger secara default
Konfigurasikan server sebagai kumpulan replika
Dipindahkan dari V8 ke Spider Monkey
Validasi dokumen
Baca Kekhawatiran
29 November 2016 3.4 Kolasi, Perhatian dan tampilan baca yang dapat dilinearisasi
Juni 2018 4.0 Transaksi yang disempurnakan
13 Juli 2021 5.0 Enkripsi tingkat bidang sisi klien
API berversi masa depan
Dukungan deret waktu
Reharding langsung memerlukan perubahan pemetaan objek-shard dan memindahkan objek ke shard lain.

Aplikasi mandiri yang cepat dan mudah dapat dibuat dengan bantuan Spring Boot (seperti yang akan kita lihat nanti). Sebagai hasil dari kemudahan penggunaannya, MongoDB telah menjadi database NoSQL paling populer. Cepat, aman, dapat diandalkan, dan membutuhkan waktu pengembangan minimal dapat dibuat dengan menggabungkan Spring Boot dan MongoDB.

Artikel ini menunjukkan cara menggunakan Spring Data MongoDB API untuk menggabungkan Spring Boot dengan MongoDB.

Cara menggunakan Spring Boot dengan MongoDB

Spring Boot adalah kerangka kerja web berbasis layanan mikro yang dikonfigurasi secara otomatis dan dapat menyediakan fitur keamanan dan akses basis data bawaan. Dengan demikian, boot Spring dapat dengan cepat membuat aplikasi yang berdiri sendiri tanpa perubahan konfigurasi. Di sisi lain, MongoDB adalah database NoSQL paling populer karena dapat dengan mudah menyimpan dan mengambil data. Menggabungkan Spring Boot dan MongoDB menghasilkan aplikasi yang aman, cepat, dan andal yang membutuhkan waktu pengembangan minimum.

Spring Boot membuat aplikasi siap produksi dengan cepat. MongoDB dan Spring Boot berinteraksi menggunakan kelas Template Mongo dan antarmuka Repositori Mongo.

  • Template Mongo — ini mengimplementasikan serangkaian API yang siap digunakan. Pilihan yang baik untuk operasi seperti agregasi pembaruan, antara lain; selain itu, Template Mongo menawarkan kontrol yang lebih halus atas kueri khusus.
  • Repositori Mongo digunakan untuk kueri dasar yang melibatkan banyak bidang dokumen seperti melihat dokumen dan pembuatan data.

Konfigurasi Spring Boot MongoDB menggunakan kedua pendekatan hanya membutuhkan beberapa baris kode.

Spring Boot adalah kerangka kerja aplikasi untuk aplikasi web Java berdasarkan kerangka kerja MVC (Model-View-Controller). Injeksi ketergantungannya menangani fitur seperti keamanan basis data, akses, dan inisialisasi, memungkinkan pengembang untuk fokus pada logika bisnis. Selain itu, ini dibangun di atas kerangka Spring, terutama untuk REST API dan membutuhkan konfigurasi yang sangat sedikit. Ini memiliki empat lapisan:

Lapisan presentasi — Bagian tampilan dari kerangka kerja MVC menangani front-end.

Lapisan bisnis adalah pengontrol tempat semua logika bisnis dan validasi dilakukan.

Lapisan persistensi — Lapisan ini menerjemahkan objek bisnis ke objek database.

Lapisan basis data — Operasi CRUD (Buat, Baca, Perbarui, Hapus) yang sebenarnya.

MongoDB adalah database cepat yang mampu menangani sejumlah besar data terorganisir dan tidak terstruktur, sehingga ideal untuk aplikasi web. MongoDB menyimpan data sebagai objek JSON Biner, yang menyederhanakan pengambilan data. Kerangka kerja Spring mencakup konektor kuat yang memungkinkan operasi database yang efisien dengan MongoDB.

Kami hanya peduli dengan lapisan Persistence dan Database di Spring Boot dengan contoh tutorial MongoDB ini. Kami akan menjalankan perangkat lunak kami melalui Lingkungan Pengembangan Terintegrasi (IDE) untuk mempertahankan penekanan kuat pada operasi CRUD. Untuk menghubungkan Spring Boot dan MongoDB, kami akan menambahkan konfigurasi Spring Boot MongoDB.

Apa yang akan kita buat dalam contoh ini

Mari kita kembangkan daftar belanjaan pengguna fiktif. Kami akan melakukan prosedur berikut:

  1. Kami mendefinisikan barang belanjaan Plain Old Java Object (POJO) dengan ID, nama, kuantitas, dan kategori di aplikasi Spring kami.
  2. Setelah itu, kami melakukan tindakan membuat, membaca, memperbarui, dan menghapus (CRUD) melalui antarmuka publik MongoRepository.
  3. Akhirnya, kami mendemonstrasikan metode yang berbeda untuk memodifikasi dokumen dengan memanfaatkan kelas MongoTemplate.

Prasyarat

Kami membutuhkan:

  • Cluster MongoDB Atlas (jika Anda belum memiliki akun, daftar gratis sebelum melanjutkan ke fase berikutnya).
  • Inisialisasi Musim Semi
  • Java 1.8
  • Maven (instal Maven dengan membuka "Bantuan -> lalu Instal perangkat lunak baru" di Eclipse).
  • Lingkungan pengembangan terintegrasi (IDE) akan mengimpor pustaka dan dependensi penting. Eclipse akan digunakan untuk ilustrasi proyek ini.

Untuk memulai, buat proyek Spring Boot dengan pengaturan berikut menggunakan Spring Initializr:

Pilih Proyek Maven dengan Java (8) sebagai bahasa pemrograman dan Spring Boot 2.5.3 sebagai versinya. Selain itu, tambahkan dependensi Spring Web dan Spring Data MongoDB. Spring Web mengintegrasikan server Apache Tomcat, Spring MVC, dan REST ke dalam aplikasi Anda, untuk memusatkan pengelolaan semua dependensi umum.

Kami memanfaatkan ketergantungan Spring Data MongoDB untuk mengakses data dari cluster MongoDB Atlas kami di aplikasi ini.

Masukkan metadata untuk proyek (seperti yang diilustrasikan di atas) dan pilih opsi JAR. Spring Initializr mengelola pembuatan file pom.xml sementara Maven mengunduh dependensi yang diperlukan melalui pom.xml.

Ini melengkapi persiapan kami untuk pengaturan. Setelah itu, kita dapat mengklik tombol Generate untuk menghasilkan semua file yang diperlukan untuk bootstrap proyek Spring Boot. Setelah itu, browser akan mulai mengunduh file ZIP secara otomatis.

Setelah mengunduh file ZIP, unzip proyek. Dari IDE, buka proyek. Anda dapat melihat contoh struktur proyek yang mirip dengan ini:

Seperti yang bisa kita lihat, dependensi yang kita tambahkan disertakan dalam file pom.xml sebagai artifactId:

Saatnya mengisi subdirektori src/main/java dengan konten.

Implementasi Model MongoDB

Kelas POJO atau GroceryItem berfungsi sebagai model kami di sini.

Buat paket bernama “com.example.mdbspringboot.model” dan sertakan kelas GroceryItem.java di dalamnya.

Anotasi @Document digunakan untuk menentukan nama koleksi yang akan digunakan model. MongoDB akan membuat koleksi jika belum ada.

Kami dapat menghasilkan getter dan setter untuk kode ini dengan menggunakan opsi Eclipse Source -> Generate Getters and Setters. Pertama, gunakan anotasi @Id untuk menentukan _id kunci utama dari dokumen MongoDB. MongoDB akan secara otomatis menghasilkan bidang _id saat dokumen dibuat jika kita tidak menentukan apa pun.

Implementasi MongoDB API di Spring Boot

Repositori adalah tempat API diimplementasikan. Ini berfungsi sebagai jembatan antara database dan model, menyediakan akses ke semua aktivitas CRUD.

Buat paket bernama “com.example.mdbspringboot.repository” untuk memuat semua file repositori.

Kami membuat antarmuka publik untuk ItemRepository yang memperluas antarmuka MongoRepository.

Pendekatan pertama, findItemByName, memerlukan argumen kueri, yang menentukan bidang tempat kueri harus difilter. Ini ditentukan menggunakan anotasi @Query. Teknik kedua memanfaatkan bidang kategori untuk mengambil semua objek yang termasuk dalam kategori tertentu. Kami hanya ingin nama dan nomor bidang diproyeksikan dalam jawaban kueri; oleh karena itu, kami menyetel bidang tersebut ke 1. Kami menerapkan kembali metode count() dalam statusnya saat ini.

Contoh MongoDB dengan Spring Boot CRUD

Kami sekarang siap untuk mengembangkan Aplikasi Musim Semi kami dan menguji metodenya.

Untuk menautkan ke MongoDB Atlas, kami mendefinisikan string koneksi di file application.properties folder src/main/resources. String koneksi cluster dapat diakses di UI Atlas. Tidak ada file lain yang diperlukan untuk menyertakan kode terkait koneksi. Spring Boot mengelola koneksi database atas nama kami.

Selain itu, kami menentukan nama database di sini – MongoDB akan membuatnya jika tidak ada.

Kami tidak menggunakan Controller atau View dalam sampel Spring Boot MongoDB ini. Sebagai gantinya, untuk melihat output di konsol, kami akan menggunakan CommandLineRunner.

Buat kelas utama MdbSpringBootApplication.java dalam paket root com.example.mdbspringboot:

Untuk menjalankan aplikasi pegas, kelas kami MdbSpringBootApplication menggunakan antarmuka CommandLineRunner. ItemRepository adalah Autowired, yang berarti bahwa Spring akan menemukannya secara otomatis. Anotasi @SpringBootApplication digunakan untuk menginisialisasi Konteks Aplikasi. Selain itu, kami mengaktifkan Repositori Mongo dengan @EnableMongoRepositories. Struktur proyek kami sekarang harus menyerupai berikut ini:

Sekarang, mari tambahkan operasi repositori ke kelas utama, yang akan digunakan untuk operasi CRUD:

Membuat operasi Boot Musim Semi MongoDB

Kami akan menggunakan fungsi simpan untuk membuat dokumen baru. Kita dapat mengakses metode simpan melalui kelas SimpleMongoRepository, yang menggunakan protokol MongoRepository. Antarmuka ItemRepository kami memperluas antarmuka ItemRepository MongoRepository.

Metode simpan akan menerima parameter tipe GroceryItem. Bagian ini akan membuat lima item belanjaan (dokumen) kemudian menggunakan fungsi simpan untuk menyimpannya ke MongoDB.

Operasi baca Spring Boot MongoDB

Kami sedang melakukan empat operasi baca yang berbeda dalam aplikasi ini:

Gunakan fungsi findAll() untuk mengambil semua dokumen (barang kebutuhan sehari-hari).

Fungsi findItemByName mengembalikan satu item (dokumen) berdasarkan bidang namanya.

Ambil daftar objek yang diatur menurut kategori.

Hitung jumlah total objek.

Kami dapat merancang fungsi pembantu untuk memformat hasil operasi baca:

Operasi pembaruan Boot Musim Semi MongoDB

Asumsikan kita berubah pikiran dan lebih memilih istilah "kudapan" daripada "makanan ringan" di daftar belanjaan kita. Kami perlu memperbarui dokumen apa pun yang berisi kategori "makanan ringan". Untuk melakukannya, pertama-tama kita harus mengambil semua kertas yang termasuk dalam kategori “makanan ringan”, mengubah kategori menjadi “kudapan”, lalu menyimpan semua dokumen.

Operasi penghapusan Boot Musim Semi MongoDB

Alih-alih mengubah kategori atau item, kami mungkin ingin menghapus item belanjaan dari daftar kami. Menggunakan fungsi deleteById yang telah ditentukan sebelumnya, kami dapat menghapus item belanjaan dengan ID tertentu.

Kita bisa menggunakan groceryItemRepo.deleteAll(); berfungsi untuk menghapus semua item. Menghapus semua dokumen dalam koleksi tidak akan menghapusnya.

Merakit operasi CRUD

Setelah itu, kita akan mengimplementasikan CommandLineRunner. Untuk memanggil metode sebelumnya, gunakan metode run():

Pernyataan system.out digunakan untuk meningkatkan tampilan keluaran.

Saat perangkat lunak dijalankan, output berikut diharapkan:

Fungsi pembaruan MongoDB Spring Boot bersama dengan MongoTemplate

Selain itu, kita dapat memanfaatkan kelas MongoTemplate untuk melakukan tindakan pembaruan pada bidang tertentu. Ini termasuk fungsionalitas default paket org.springframework.data.mongodb.core.query. Kami tidak perlu menulis kode dalam jumlah besar, dan pembaruan dapat dilakukan dengan satu kueri basis data. MongoTemplate juga dapat digunakan untuk proses yang lebih rumit seperti agregasi (tidak dalam cakupan panduan ini).

Repositori khusus harus dibuat sebelum menggunakan kelas yang disebut MongoTemplate. Di sinilah kueri untuk pembaruan akan dibuat.

Izinkan saya untuk mendemonstrasikan cara membuat metode yang memperbarui jumlah item supermarket.

Buat antarmuka CustomItemRepository:

Kami dapat memperluas antarmuka dengan metode sebanyak yang diperlukan dan memberikan contoh di kelas CustomItemRepositoryImpl:

Spring akan mengimpor dependensi objek karena MongoTemplate adalah @Autowired. Selain itu, anotasi @Component memungkinkan Spring menemukan antarmuka CustomItemRepository.

Langkah berikut adalah memanggil fungsi ini dari dalam kelas utama kita. Seperti halnya grosirItemRepo, kita harus mendefinisikan customRepo kita sebagai berikut:

Kemudian, di kelas utama, buat metode berikut yang memanggil fungsi customRepo kita:

Tambahkan metode berikut ke metode run sehingga dipanggil saat program dijalankan:

Anda harus mendapatkan hasil berikut:

Seperti yang dikatakan sebelumnya, kami dapat melakukan modifikasi dalam satu transaksi basis data alih-alih MongoRepository, yang memerlukan tiga tindakan:cari, setel, dan simpan. MongoTemplate juga menyertakan metode updateMulti(), yang memungkinkan Anda memperbarui beberapa dokumen secara bersamaan.

Kesimpulan

Kami menunjukkan dalam artikel ini betapa sederhananya mengintegrasikan MongoDB dengan Spring Boot. Tidak ada kode lain yang diperlukan untuk terhubung ke MongoDB Atlas. MongoDB Atlas menyediakan antarmuka yang mudah digunakan untuk menyimpan dan mengakses data dari lokasi mana pun. Jika Anda telah menyelesaikan tutorial sederhana ini, kami yakin Anda sekarang memahami cara menggunakan Spring Boot dengan MongoDB. Jika Anda mengalami kesulitan, hubungi melalui bagian komentar untuk bantuan. Terima kasih telah membaca.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mendapatkan cap waktu unix dalam hitungan detik dari MongoDB ISODate selama agregasi

  2. MongoDB $toDouble

  3. Ganti nama Bidang dalam Koleksi MongoDB

  4. Agregat MongoDB dalam pengelompokan harian

  5. Cara Mendapatkan Hari, Bulan, dan Tahun dari Tanggal di SQL