В приложението един MongoClient
обект с необходим брой връзки, използвайки пулиране на връзки , ще работи в този случай. Стойността по подразбиране на пула от връзки е 100
, и може да бъде модифициран (или конфигуриран) според нуждите.
Клиентският обект mongo може да бъде създаден в началото на приложението и се затваря само когато приложението е затворено. Това спестява ресурсите, свързани със създаването на връзка с клиентските обекти mongo във всеки клас за достъп до колекция.
Един и същ клиентски обект mongo може да се използва в цялото приложение. Единичен клас (който поддържа един екземпляр на клиентския обект mongo) може да бъде достъпен от всеки друг обект в приложението, който се нуждае от връзка към сървъра на базата данни MongoDB.
Какво представлява групирането на връзки?
Примерен код:
/*
* 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();
// ...
}
Mongo Client
MongoClient
обект се използва за свързване към MongoDB сървъра, получаване на достъп до база данни чрез getDatebase()
метод и работа с колекции.
com.mongodb.client.MongoClient
интерфейс:
От документацията на MongoDB Java :
Екземплярът MongoClient представлява набор от връзки към базата данни; ще ви е необходим само един екземпляр на класа MongoClient дори с множество нишки.
Следният код създава обект за свързване на клиент MongoDB с настройки по подразбиране, като хост ("localhost") и порт (27017
), групиране на връзки и т.н., и се свързва с екземпляр на MongoDB и получава достъп до testDB
база данни.
MongoClient mongoClient = MongoClients.create();
MongoDatabase database = mongoClient.getDatabase("testDB");
Настройки на Mongo Client:
Можете изрично да посочите други настройки с MongoClientSettings
за контролиране на поведението на MongoClient
.
MongoClient mongoClient = MongoClients.create(MongoClientSettings settings)
ConnectionPoolSettings
обектът определя всички настройки, които се отнасят до набора от връзки към MongoDB сървър. Приложението създава този набор от връзки, когато клиентският обект е създаден. ConnectionPoolSettings.Builder
е създател за ConnectionPoolSettings
, има методи за указване на свойствата на пула за връзки. Например maxSize(int maxSize)
:Максималният разрешен брой връзки (по подразбиране е 100
). Други методи включват minSize
, maxConnectionIdleTime
и т.н.
Код за инстанциране на MongoClient
с настройки за набор от връзки:
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());