1. Ikhtisar
Dalam artikel ini, kita akan melihat integrasi MongoDB, database open source NoSQL yang sangat populer dengan klien Java mandiri.
MongoDB ditulis dalam C++ dan memiliki cukup banyak fitur solid seperti pengurangan peta, auto-sharding, replikasi, ketersediaan tinggi, dll.
2. MongoDB
Mari kita mulai dengan beberapa poin penting tentang MongoDB itu sendiri:
- menyimpan data dalam dokumen mirip JSON yang dapat memiliki berbagai struktur
- menggunakan skema dinamis, yang berarti kita dapat membuat catatan tanpa mendefinisikan apa pun sebelumnya
- struktur catatan dapat diubah hanya dengan menambahkan bidang baru atau menghapus yang sudah ada
Model data yang disebutkan di atas memberi kita kemampuan untuk mewakili hubungan hierarkis, untuk menyimpan array dan struktur lain yang lebih kompleks dengan mudah.
3. Terminologi
Memahami konsep dalam MongoDB menjadi lebih mudah jika kita dapat membandingkannya dengan struktur database relasional.
Mari kita lihat analogi antara Mongo dan sistem MySQL tradisional:
- Tabel di MySQL menjadi Koleksi dalam bahasa Mongo
- Baris menjadi Dokumen
- Kolom menjadi Field
- Bergabung didefinisikan sebagai menghubungkan dan disematkan dokumen
Ini adalah cara sederhana untuk melihat konsep inti MongoDB, namun tetap bermanfaat.
Sekarang, mari selami implementasi untuk memahami database yang kuat ini.
4. Ketergantungan Maven
Kita harus mulai dengan mendefinisikan ketergantungan Driver Java untuk MongoDB:
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.4.1</version>
</dependency>
Untuk memeriksa apakah ada versi baru perpustakaan yang telah dirilis – lacak rilisnya di sini.
5. Menggunakan MongoDB
Sekarang, mari kita mulai mengimplementasikan kueri Mongo dengan Java. Kami akan mengikuti dengan operasi CRUD dasar karena ini adalah yang terbaik untuk memulai.
5.1. Buat Koneksi Dengan MongoClient
Pertama, mari kita membuat koneksi ke server MongoDB. Dengan versi>=2.10.0, kita akan menggunakan MongoClient :
MongoClient mongoClient = new MongoClient("localhost", 27017);
Dan untuk versi yang lebih lama gunakan Mongo kelas:
Mongo mongo = new Mongo("localhost", 27017);
5.2. Menghubungkan ke Basis Data
Sekarang, mari kita hubungkan ke database kita. Sangat menarik untuk dicatat bahwa kita tidak perlu membuatnya. Ketika Mongo melihat bahwa database tidak ada, itu akan membuatnya untuk kita:
DB database = mongoClient.getDB("myMongoDb");
Terkadang, secara default, MongoDB berjalan dalam mode terotentikasi. Dalam hal ini, kita perlu mengautentikasi saat menghubungkan ke database.
Kita dapat melakukannya seperti yang disajikan di bawah ini:
MongoClient mongoClient = new MongoClient();
DB database = mongoClient.getDB("myMongoDb");
boolean auth = database.authenticate("username", "pwd".toCharArray());
5.3. Tampilkan Basis Data yang Ada
Mari kita tampilkan semua database yang ada. Saat kita ingin menggunakan baris perintah, sintaks untuk menampilkan database mirip dengan MySQL:
show databases;
Di Java, kami menampilkan database menggunakan cuplikan di bawah ini:
mongoClient.getDatabaseNames().forEach(System.out::println);
Outputnya adalah:
local 0.000GB
myMongoDb 0.000GB
Di atas, lokal adalah database Mongo default.
5.4. Buat Koleksi
Mari kita mulai dengan membuat Koleksi (tabel setara untuk MongoDB) untuk database kami. Setelah kita terhubung ke database kita, kita bisa membuat Koleksi sebagai:
database.createCollection("customers", null);
Sekarang, mari kita tampilkan semua koleksi yang ada untuk database saat ini:
database.getCollectionNames().forEach(System.out::println);
Outputnya adalah:
customers
5.5. Simpan – Sisipkan
simpan operasi memiliki semantik simpan-atau-perbarui:jika id hadir, ia melakukan pembaruan , jika tidak – ia melakukan menyisipkan .
Saat kita menyimpan pelanggan baru:
DBCollection collection = database.getCollection("customers");
BasicDBObject document = new BasicDBObject();
document.put("name", "Shubham");
document.put("company", "Baeldung");
collection.insert(document);
Entitas akan dimasukkan ke dalam database:
{
"_id" : ObjectId("33a52bb7830b8c9b233b4fe6"),
"name" : "Shubham",
"company" : "Baeldung"
}
Selanjutnya, kita akan melihat operasi yang sama – simpan – dengan perbarui semantik.
5.6. Simpan – Perbarui
Sekarang mari kita lihat simpan dengan perbarui semantik, beroperasi pada pelanggan yang sudah ada:
{
"_id" : ObjectId("33a52bb7830b8c9b233b4fe6"),
"name" : "Shubham",
"company" : "Baeldung"
}
Sekarang, ketika kita menyimpan pelanggan yang ada – kami akan memperbaruinya:
BasicDBObject query = new BasicDBObject();
query.put("name", "Shubham");
BasicDBObject newDocument = new BasicDBObject();
newDocument.put("name", "John");
BasicDBObject updateObject = new BasicDBObject();
updateObject.put("$set", newDocument);
collection.update(query, updateObject);
Basis data akan terlihat seperti ini:
{
"_id" : ObjectId("33a52bb7830b8c9b233b4fe6"),
"name" : "John",
"company" : "Baeldung"
}
Seperti yang Anda lihat, dalam contoh khusus ini, simpan menggunakan semantik update , karena kita menggunakan objek dengan _id yang diberikan .
5.7. Baca Dokumen Dari Koleksi
Mari kita cari Dokumen dalam Koleksi dengan membuat kueri:
BasicDBObject searchQuery = new BasicDBObject();
searchQuery.put("name", "John");
DBCursor cursor = collection.find(searchQuery);
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
Ini akan menampilkan satu-satunya Dokumen kita miliki sekarang di Koleksi :
[
{
"_id" : ObjectId("33a52bb7830b8c9b233b4fe6"),
"name" : "John",
"company" : "Baeldung"
}
]
5.8. Hapus sebuah Dokumen
Mari kita lanjutkan ke operasi CRUD terakhir kami, penghapusan:
BasicDBObject searchQuery = new BasicDBObject();
searchQuery.put("name", "John");
collection.remove(searchQuery);
Dengan perintah di atas dijalankan, satu-satunya Dokumen kami akan dihapus dari Koleksi .