MongoDB Java Tutorials - Hướng dẫn kết nối MongoDB sử dụng MongoDB Java Driver
Overview
Trong bài này tôi sẽ hướng dẫn các bạn kết nối MongoDB sử dụng ngôn ngữ Java.
Tools và công nghệ sử dụng:
- MongoDB-Java-Driver 3.12.6
- JDK 11
- Maven 3.0.3
- Intellij 2020
Maven Dependencies
Để kết nối MongoDB, tôi sử dụng thư viện của Java Driver do MOngoDB cung cấp
<!-- https://mvnrepository.com/artifact/org.mongodb/mongo-java-driver -->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.12.6</version>
</dependency>
Connect MongoDB
1. Kết nối MongoDB với thông tin mặc định: IP localhost
, Port 27017
:
package com.hungcdev;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
public class MongoDbConnection {
MongoClient mongoClient;
public void connectMongoDB() {
mongoClient = MongoClients.create();
System.out.println("Connect MongoDB successful!");
}
}
2. Kết nối MongoDB với thông tin IP và Port được chỉ định:
package com.hungcdev;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
public class MongoDbConnection {
MongoClient mongoClient;
public void connectMongoDB(String ip, int port) {
mongoClient = MongoClients.create("mongodb://" + ip + ":" + port) ;
System.out.println("Connect MongoDB successful!");
}
}
3. Kết nối MongoDB ánh xạ POJOs (Plain Old Java Object):
Với 2 cách kết nối ở trên, các bạn sẽ thao tác với database thông qua BSON của mongo cung cấp. Nghĩa là bạn phải chuyển đổi giữa class Java và BSON để thao tác với mongoDB. Thực sự việc này khá là bất tiện, nhất là những Object Java với rất nhiều thuộc tính sẽ cực kỳ tốn thời gian.
Tôi sẽ giới thiệu các bạn các kết nối MongoDB mà không cần phải chuyển đổi Object Java sang Object của MongoDB.
Đầu tiên, tạo một ConnectionString:
ConnectionString connectionString = new ConnectionString("mongodb://" + ip + ":" + port);
Tiếp đến, cần cấu hình CodecRegistry để xử lý vấn đền chuyển đổi giữa POJOs và BSON:
CodecRegistry pojoCodecRegistry = fromProviders(PojoCodecProvider.builder().automatic(true).build());
Chúng ta cần thêm DefaultCodecRegistry, cái mà có thể xử lý tất cả các type của Java như Boolean, Double, String, BigDecimal,...
CodecRegistry codecRegistry = fromRegistries(MongoClientSettings.getDefaultCodecRegistry(), pojoCodecRegistry);
Gói các thông tin cấu hình lại với nhau thông qua MongoClientSettings
:
MongoClientSettings clientSettings = MongoClientSettings.builder()
.applyConnectionString(connectionString)
.codecRegistry(codecRegistry)
.build();
Cuối cùng, hoàn thành việc kết nối MongoDB:
import com.mongodb.ConnectionString;
import com.mongodb.MongoClientSettings;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoDatabase;
import org.bson.codecs.configuration.CodecRegistry;
import org.bson.codecs.pojo.PojoCodecProvider;
import static org.bson.codecs.configuration.CodecRegistries.fromProviders;
import static org.bson.codecs.configuration.CodecRegistries.fromRegistries;
public class MongoDbConnection {
MongoClient mongoClient;
public void connectMongoDBWithPOJOs(String ip, int port) {
ConnectionString connectionString = new ConnectionString("mongodb://" + ip + ":" + port);
CodecRegistry pojoCodecRegistry = fromProviders(PojoCodecProvider.builder().automatic(true).build());
CodecRegistry codecRegistry = fromRegistries(MongoClientSettings.getDefaultCodecRegistry(), pojoCodecRegistry);
MongoClientSettings clientSettings = MongoClientSettings.builder()
.applyConnectionString(connectionString)
.codecRegistry(codecRegistry)
.build();
mongoClient = MongoClients.create(clientSettings);
}
}
Example
Tôi sẽ ví dụ kết nối MongoDB sau đó tạo Database và Collection:
public static void main(String[] args) {
MongoDbConnection mongoDbConnection = new MongoDbConnection();
mongoDbConnection.connectMongoDBWithPOJOs("localhost", 27017);
MongoDatabase mongoDatabase = mongoDbConnection.getMongoClient().getDatabase("HungcDev");
mongoDatabase.createCollection("User");
System.out.println(mongoDatabase.getName());
}
Source Code
Source code liên quan về bài viết: https://github.com/hungcdev/MongoDB-Java-Tutorials