Trong ứng dụng, một MongoClient
đối tượng có số lượng kết nối bắt buộc, sử dụng tổng hợp kết nối , sẽ hoạt động trong trường hợp này. Giá trị mặc định của nhóm kết nối là 100
, và có thể được sửa đổi (hoặc định cấu hình) nếu cần.
Đối tượng khách hàng mongo có thể được tạo khi bắt đầu ứng dụng và chỉ được đóng khi ứng dụng được đóng. Điều này giúp tiết kiệm các tài nguyên liên quan đến việc tạo kết nối với các đối tượng khách mongo trong mỗi lớp truy cập bộ sưu tập.
Cùng một đối tượng khách mongo có thể được sử dụng trong toàn bộ ứng dụng. Một singleton Lớp (duy trì một phiên bản của đối tượng khách mongo) có thể được truy cập bởi bất kỳ đối tượng nào khác trong ứng dụng cần kết nối với máy chủ cơ sở dữ liệu MongoDB.
Tổng hợp kết nối là gì?
Mã mẫu:
/*
* Manages the MongoClient object and its settings like host, port, connection pool, etc.
*/
public class DBAccess {
private static MongoClient mongoClient;
private static DBAccess dbAccess;
// MongoClient with default settings
// NOTE: the code will have only one of the constructors
//private DBAccess() {
// final String connectionString = "mongodb://localhost:27017";
// this.mongoClient = MongoClients.create(connectionString);
//}
// MongoClient with custom settings.
// Private constructor, so that the class can be instantiated outside this class.
// NOTE: the code will have only one of the constructors
private DBAccess() {
MongoClientSettings settings =
MongoClientSettings.builder()
.applyToConnectionPoolSettings(builder ->
builder.maxSize(40).minSize(10))
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("localhost", 27017))))
.build();
mongoClient = MongoClients.create(settings);
}
public static MongoClient getConnection() {
if (dbAccess == null) {
dbAccess = new DBAccess();
}
return mongoClient;
}
public static void closeDatabase() {
mongoClient.close();
}
}
/*
* Class manages a collection.
*/
public class CollectionOneAccess {
public static String COLLECTION_ONE = "collection_one";
private MongoCollection<Document> collection;
public CollectionOneAccess(MongoDatabase db) {
collection = db.getCollection(COLLECTION_ONE);
}
public void printOneDocument() {
Document myDoc = collection.find().first();
System.out.println(myDoc.toJson());
}
// other CRUD operations ...
}
// Usage of DBAcess and CollectionOneAccess classes:
private static final String APP_DATABASE = "abc_db";
public static void main(String [] args) {
MongoDatabase database = DBAccess.getConnection().getDatabase(APP_DATABASE);
CollectionOneAccess one = new CollectionOneAccess(database);
one.printOneDocument();
// ...
}
Ứng dụng khách Mongo
MongoClient
đối tượng được sử dụng để kết nối với máy chủ MongoDB, truy cập vào cơ sở dữ liệu bằng getDatebase()
và làm việc với các bộ sưu tập.
com.mongodb.client.MongoClient
giao diện:
Cá thể MongoClient đại diện cho một nhóm các kết nối đến cơ sở dữ liệu; bạn sẽ chỉ cần một phiên bản của lớp MongoClient ngay cả với nhiều luồng.
Đoạn mã sau tạo đối tượng kết nối máy khách MongoDB với cài đặt mặc định, như máy chủ ("localhost") và cổng (27017
), gộp kết nối, v.v. và kết nối với một phiên bản MongoDB và có quyền truy cập vào testDB
cơ sở dữ liệu.
MongoClient mongoClient = MongoClients.create();
MongoDatabase database = mongoClient.getDatabase("testDB");
Cài đặt ứng dụng Mongo:
Bạn có thể chỉ định rõ ràng các cài đặt khác với MongoClientSettings
để kiểm soát hành vi của MongoClient
.
MongoClient mongoClient = MongoClients.create(MongoClientSettings settings)
ConnectionPoolSettings
đối tượng chỉ định tất cả các cài đặt liên quan đến nhóm kết nối đến máy chủ MongoDB. Ứng dụng tạo nhóm kết nối này khi đối tượng khách được tạo. ConnectionPoolSettings.Builder
là một trình xây dựng cho ConnectionPoolSettings
, có các phương thức để chỉ định các thuộc tính của nhóm kết nối. Ví dụ:maxSize(int maxSize)
:Số lượng kết nối tối đa được phép (mặc định là 100
). Các phương pháp khác bao gồm, minSize
, maxConnectionIdleTime
, v.v.
Mã để tạo MongoClient
với cài đặt nhóm kết nối:
MongoClientSettings settings = MongoClientSettings.builder()
.applyToConnectionPoolSettings(builder ->
builder.maxSize(20))
.build();
MongoClient mongoClient = MongoClients.create(settings);
// ...
// Verify the connection pool settings
System.out.println("Pool size: " +
settings.getConnectionPoolSettings().getMaxSize());